Express has no method configure error

28,739

Solution 1

The configure method has been removed from express as of version 4.0.0 (including 4.0.0-rc2). See the changelog at https://github.com/strongloop/express/blob/master/History.md#400--2014-04-09

Solution 2

Tom in his blog post new-features-node-express-4 provides examples of how to convert from using app.configure in express version 3.x to removing it in express version 4.0.

For convenience I added the code example below.

Version 3.x

// all environments
app.configure(function(){
  app.set('title', 'Application Title');
})

// development only
app.configure('development', function(){
  app.set('mongodb_uri', 'mongo://localhost/dev');
})

// production only
app.configure('production', function(){
  app.set('mongodb_uri', 'mongo://localhost/prod');
})

Version 4.0

// all environments
app.set('title', 'Application Title');

// development only
if ('development' == app.get('env')) {
  app.set('mongodb_uri', 'mongo://localhost/dev');
}

// production only
if ('production' == app.get('env')) {
  app.set('mongodb_uri', 'mongo://localhost/prod');
}
Share:
28,739

Related videos on Youtube

SuperioREX
Author by

SuperioREX

Updated on July 09, 2022

Comments

  • SuperioREX
    SuperioREX almost 2 years

    I'm trying to get started with the MEAN stack. And I'm following this tutorial: link

    I have made it until the Test Our Server section. Here

    // modules =================================================
    var express = require('express');
    var app     = express();
    var mongoose= require('mongoose');
    
    // configuration ===========================================
    
    // config files
    var db = require('./config/db');
    
    var port = process.env.PORT || 8080; // set our port
    mongoose.connect(db.url); // connect to our mongoDB database (uncomment after you enter in your own credentials in config/db.js)
    
    app.configure(function() {
        app.use(express.static(__dirname + '/public'));     // set the static files location /public/img will be /img for users
        app.use(express.logger('dev'));                     // log every request to the console
        app.use(express.bodyParser());                      // have the ability to pull information from html in POST
        app.use(express.methodOverride());                  // have the ability to simulate DELETE and PUT
    });
    
    // routes ==================================================
    require('./app/routes')(app); // configure our routes
    
    // start app ===============================================
    app.listen(port);                                       // startup our app at http://localhost:8080
    console.log('Magic happens on port ' + port);           // shoutout to the user
    exports = module.exports = app;                         // expose app
    

    When I run

    nodemon server.js
    

    I get this error

    app.configure(function() {
    ^
    TypeError: Object function (req, res, next) {
     app.handle(req, res, next);
    } has no method 'configure'
     at Object.<anonymous> (C:\Users\Yuksel\Desktop\node\test\server.js:14:5)
     at Module._compile (module.js:456:26)
     at Object.Module._extensions..js (module.js:474:10)
     at Module.load (module.js:356:32)
     at Function.Module._load (module.js:312:12)
     at Function.Module.runMain (module.js:497:10)
     at startup (node.js:119:16)
     at node.js:902:3
    5 Mar 17:27:20 - [nodemon] app crashed - waiting for file changes before startin
    g...
    

    It simply says app has no method configure(I guess). But when I delete the configure part and run it again, it works.(This mean app has .listen method, so it is an express object.)

    I have tried with both node and nodemon. And I couldn't figure it out. Thank you for your time.

    • Connor Leech
      Connor Leech almost 10 years
      it's because of express 4
  • Ian
    Ian about 10 years
    Just to add to this answer - this is the problem because in the tutorial the OP posted, the package.json has this in it: "express": "latest" which would make this answer correct. Just shows why "latest" isn't a good version to use
  • SuperioREX
    SuperioREX about 10 years
    what method should i use instead?
  • Ian
    Ian about 10 years
    @SuperioREX Don't replace with a new method - just execute the code inside. stackoverflow.com/questions/18637148/…
  • STEEL
    STEEL almost 10 years
    thanks man. thanks for showing how to use express as per version 4.0+
  • Eric Bishard
    Eric Bishard over 9 years
    Yes, this answer helped me tremendously. I'm glad you spelled it out for us