Express突然不包括任何中间件

时间:2016-11-21 21:59:01

标签: node.js express

我一直在使用Node.js和Express一段时间完美地适用于Web应用程序,突然之间我一直都会遇到错误“大多数中间件(如bodyParser)不再与Express捆绑在一起,必须单独安装“

这是因为我将npm升级到4.0.2并且错误对话框中有一个链接,记录了如何安装和使用新的中间件。

Error: Most middleware (like bodyParser) is no longer bundled with Express and must be installed separately. Please see https://github.com/senchalabs/connect#middleware.
at Function.get (/Users/Grayson/max_performance_survey_report_v1.5/node_modules/express/lib/express.js:99:13)
at Object.<anonymous> (/Users/Grayson/max_performance_survey_report_v1.5/server.js:27:16)
at Module._compile (module.js:570:32)
at Object.Module._extensions..js (module.js:579:10)
at Module.load (module.js:487:32)
at tryModuleLoad (module.js:446:12)
at Function.Module._load (module.js:438:3)
at Module.runMain (module.js:604:10)
at run (bootstrap_node.js:394:7)
at startup (bootstrap_node.js:149:9)

编辑:我了解如何使用新版本的express运行,以及如何安装新的中间件。我认为记录下如何恢复到旧版本的express / npm以便人们可以根据需要进行记录将是有用的。

2 个答案:

答案 0 :(得分:1)

您需要将缺少的中间件添加到package.json中 - 您甚至在错误消息中找到了一个URL,您可以在其中找到更多信息:

或者,如果它适用于你,你可以在你的package.json中使用旧版本的Express。

从我在GitHub上的一个项目中查看package.json文件:

https://github.com/rsp/node-express-static-example/blob/master/package.json

它包括:

"dependencies": {
  "express": "^4.14.0"
}

你可以在那里设置一些确切的版本:

"dependencies": {
  "express": "2.0.0"
}

npm install只会尝试下载该特定版本。只需找出与您的应用程序兼容的最新版本,并将其设置在那里。

使用Travis plus Greenkeeper可以帮助您使用各种版本的依赖项测试代码。

答案 1 :(得分:1)

您刚刚升级了Node吗?无论如何你应该坚持使用更新版本的Nodejs,因为他们已经做了一些安全升级和各种有用的东西。

Express希望你单独包含身体解析器:

在控制台中:

npm install body-parser --save

在代码中:

// parse application/json
app.use(bodyParser.json());                        

// parse application/x-www-form-urlencoded
app.use(bodyParser.urlencoded({ extended: true }));