无法解决Express Middleware问题

时间:2014-07-19 05:39:06

标签: node.js

我的第一段代码如下:

var express = require('express');

var app = express.createServer(express.logger());

app.get('/', function(request, response){
    response.send('Hello World 2');
});

var port = process.env.PORT || 5000;
app.listen(port, function(){
    console.log("Listening on " + port);
});

抛出错误:“大多数中间件(如记录器)不再与Express捆绑在一起,必须单独安装”

所以我查看了StackOverflow,npm安装了morgan,并将我的代码更改为:

var express = require('express');
var logger = require('morgan');

var app = express.createServer(logger());

app.get('/', function(request, response){
    response.send('Hello World 2');
});

var port = process.env.PORT || 5000;
app.listen(port, function(){
    console.log("Listening on " + port);
});

现在我收到了这个错误:

var app = express.createServer(logger());
                  ^
TypeError: Object function createApplication() {
  var app = function(req, res, next) {
    app.handle(req, res, next);
  };

  mixin(app, proto);
  mixin(app, EventEmitter.prototype);

  app.request = { __proto__: req, app: app };
  app.response = { __proto__: res, app: app };
  app.init();
  return app;
} has no method 'createServer'

2 个答案:

答案 0 :(得分:0)

您应该使用app创建express()。之后,您可以使用morgan设置任何中间件(在本例中为app.use):

var express = require('express');
var logger = require('morgan');

var app = express();

app.use(logger());

...

app.use()文档:http://expressjs.com/4x/api.html#app.use。 (链接到Express 4.x文档并不明确您正在运行的Express版本。)

有一个完全相同的例子,就像我在GitHub中的Morgan's README中所写的一样。

答案 1 :(得分:0)

这是因为createServer方法已从快递中删除。

使用

app = express();
app.use(logger())

而不是

app = express.createServer(logger())

很多东西从快递3.0改为4.0。你应该看看here