我一直在使用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以便人们可以根据需要进行记录将是有用的。
答案 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 }));