У Express нет ошибки настройки метода

Я пытаюсь начать работу со стеком MEAN. И я следую этому руководству: ссылка

Я дошел до раздела Проверить наш сервер. Здесь

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

Когда я бегу

nodemon server.js

я получаю эту ошибку

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

Он просто говорит, что у приложения нет метода configure (я думаю). Но когда я удаляю часть конфигурации и запускаю ее снова, она работает. (Это означает, что приложение имеет метод .listen, поэтому это экспресс-объект.)

Я пробовал как с node, так и с nodemon. И я не мог понять это. Спасибо за ваше время.


person SuperioREX    schedule 05.03.2014    source источник
comment
это из-за экспресс 4   -  person Connor Leech    schedule 30.04.2014


Ответы (2)


Метод configure был удален из Express версии 4.0.0 (включая 4.0.0-rc2). См. журнал изменений по адресу https://github.com/strongloop/express/blob/master/History.md#400--2014-04-09

person Brett    schedule 05.03.2014
comment
Просто чтобы добавить к этому ответу - это проблема, потому что в учебнике, опубликованном OP, в package.json есть это: express: last, что сделало бы этот ответ верный. Просто показывает, почему последняя версия не подходит для использования. - person Ian; 05.03.2014
comment
какой метод я должен использовать вместо этого? - person SuperioREX; 05.03.2014
comment
@SuperioREX Не заменяйте новым методом - просто выполните код внутри. stackoverflow.com/questions/18637148/ - person Ian; 05.03.2014

Том в своем блоге new-features-node-express-4 приводит примеры преобразования от использования app.configure в экспресс-версии 3.x до его удаления в экспресс-версии 4.0.

Для удобства я добавил пример кода ниже.

Версия 3.х

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

Версия 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');
}
person Mike Barlow - BarDev    schedule 26.04.2014
comment
Спасибо чувак. спасибо, что показали, как использовать экспресс в версии 4.0+ - person STEEL; 25.06.2014
comment
Да, этот ответ мне очень помог. Я рад, что ты объяснил это для нас. - person Eric Bishard; 02.08.2014