Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Nodejs / Express - Launching my app: express.createServer() is deprecated

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

like image 593
germainelol Avatar asked Nov 21 '12 17:11

germainelol


People also ask

What is Express () in express JS?

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.

Is Express JS deprecated?

No, it's not deprecated.

Is Express js still used 2021?

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.

Is Express necessary for node?

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.


4 Answers

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); 
like image 65
deven98602 Avatar answered Sep 29 '22 02:09

deven98602


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.

like image 39
mlibre Avatar answered Sep 29 '22 01:09

mlibre


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
like image 27
Warren Reilly Avatar answered Sep 29 '22 02:09

Warren Reilly


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

like image 30
Kowsalya Avatar answered Sep 29 '22 01:09

Kowsalya