I downloaded a node app to test and play around with. I have googled around and found that Express is found to be a little outdated. Can someone help me to fix the implemented code?
Here is the code
/**
* Module dependencies.
*/
// base dependencies for app
var express = require('express')
, routes = require('./routes')
, DB = require('./accessDB').AccessDB
, passport = require('passport')
, mongoose = require('mongoose')
, mongoStore = require('connect-mongodb');
var app = module.exports = express.createServer();
global.app = app;
var DB = require('./accessDB');
var conn = 'mongodb://localhost/CrowdNotes';
var db;
// SocketIO Configuration
//var io = require('socket.io').listen(app);
//
//io.sockets.on('connection', function(socket) {
// socket.on('user note', function (note) {
// console.log(note);
// });
//});
// Configuration
app.configure(function(){
app.set('views', __dirname + '/views');
app.set('view engine', 'jade');
app.use(express.cookieParser());
app.use(express.bodyParser());
app.use(express.methodOverride());
app.use(require('stylus').middleware({ src: __dirname + '/public' }));
app.use(express.session({
store: mongoStore(conn)
, secret: 'applecake'
}, function() {
app.use(app.router);
}));
app.use(passport.initialize());
app.use(passport.session());
app.use(express.static(__dirname + '/public'));
});
db = new DB.startup(conn);
app.configure('development', function(){
app.use(express.errorHandler({ dumpExceptions: true, showStack: true }));
});
app.configure('production', function(){
app.use(express.errorHandler());
});
// Routes
require('./routes')(app);
app.listen(3000);
console.log("Express server listening on port %d in %s mode", app.address().port, app.settings.env);
And here is the error I receive once running the app via node app
C:\CrowdNotes>node app
Warning: express.createServer() is deprecated, express
applications no longer inherit from http.Server,
please use:
var express = require("express");
var app = express();
C:\CrowdNotes\app.js:63
console.log("Express server listening on port %d in %s mode", app.address().po
^
TypeError: Object function app(req, res){ app.handle(req, res); } has no method
'address'
at Object.<anonymous> (C:\CrowdNotes\app.js:63:67)
at Module._compile (module.js:449:26)
at Object.Module._extensions..js (module.js:467:10)
at Module.load (module.js:356:32)
at Function.Module._load (module.js:312:12)
at Module.runMain (module.js:492:10)
at process.startup.processNextTick.process._tickCallback (node.js:244:9)
C:\CrowdNotes>
FIXED.
I am now at the point where I register, and go to login using my new 'User' data and receive this error:
ReferenceError: C:\CrowdNotes\views\account.jade:6
4| div#header
5| h2 CrowdNotes
> 6| p Hi, #{currentUser.name.first}!
7|
8| - if (myEvent)
9| p.center My Event: #{myEvent.name}
currentUser is not defined
at eval (eval at <anonymous> (C:\CrowdNotes\node_modules\jade\lib\jade.js:176:8))
at exports.compile (C:\CrowdNotes\node_modules\jade\lib\jade.js:181:12)
at Object.exports.render (C:\CrowdNotes\node_modules\jade\lib\jade.js:216:14)
at View.exports.renderFile [as engine] (C:\CrowdNotes\node_modules\jade\lib\jade.js:243:13)
at View.render (C:\CrowdNotes\node_modules\express\lib\view.js:75:8)
at Function.app.render (C:\CrowdNotes\node_modules\express\lib\application.js:500:10)
at ServerResponse.res.render (C:\CrowdNotes\node_modules\express\lib\response.js:716:7)
at module.exports.getAccount (C:\CrowdNotes\routes\index.js:47:11)
at Promise.module.exports.getMyEvent (C:\CrowdNotes\accessDB.js:54:7)
at Promise.addBack (C:\CrowdNotes\node_modules\mongoose\lib\promise.js:128:8)
I'm wondering if this is some form of syntax error too? Not sure what's gone wrong here as I thought the code all lined up tbh.
I am using the code from here: https://github.com/rockbot/crowdnotes
Express is a node js web application framework that provides broad features for building web and mobile applications. It is used to build a single page, multipage, and hybrid web application. It's a layer built on the top of the Node js that helps manage servers and routes.
No, it's not deprecated.
Express is currently, and for many years, the de-facto library in the Node. js ecosystem. When you are looking for any tutorial to learn Node, Express is presented and taught to people.
No, It isn't, ExpressJs is framework build on top of nodejs, as they are many framework in different programming language it is the same for Javascript in the backend side.
The solution is given in the error.
Warning: express.createServer() is deprecated, express applications no longer inherit from http.Server please use:
var express = require("express"); var app = express();
So you will have to just do this.
var express = require('express') , http = require('http'); var app = express(); var server = http.createServer(app);
Its can done with this simple program:
var express = require('express'); var app = express(); app.get('/', function(req,res) { res.send("express"); } ); app.listen(3333);
it works fine.
Another potential solution to this is to install express 2.5.8 as a dependency.
Add to package.json:
{
"name": "authentication"
, "version": "0.0.1"
, "private": true
, "dependencies": {
"express": "2.5.8"
, "jade": ">= 0.26.1"
}
}
and then run
npm install
var express = require('express');
var app = express();
app.listen(your_port_number);
With the newer release of express (express 4.x), you do not need to create server. app.listen internally does that. Refer https://expressjs.com/en/4x/api.html#app.listen
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With