web-dev-qa-db-fra.com

Express n'a pas d'erreur de configuration de méthode

J'essaie de commencer avec la pile MEAN. Et je suis ce tutoriel: lien

Je l'ai fait jusqu'à la section Test Our Server . Ici

// 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

Quand je cours

nodemon server.js

Je reçois cette erreur

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...

Il dit simplement que l'application n'a pas de méthode de configuration (je suppose). Mais lorsque je supprime la partie configure et la réexécute, cela fonctionne (cela signifie que l'application a la méthode .listen, c'est donc un objet express).

J'ai essayé à la fois avec node et nodemon. Et je ne pouvais pas le comprendre. Merci pour votre temps.

20
SuperioREX

La méthode configure a été supprimée d'Express à partir de la version 4.0.0 (y compris 4.0.0-rc2). Voir le changelog sur https://github.com/strongloop/express/blob/master/History.md#400--2014-04-09

22
Brett

Tom dans son article de blog new-features-node-express-4 fournit des exemples de conversion de l'utilisation de app.configure dans la version express 3.x pour le supprimer dans la version express 4.0.

Pour plus de commodité, j'ai ajouté l'exemple de code ci-dessous.

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');
}
47