错误:大多数中间件(如bodyParser)不再与ExpressJ捆绑在一起



我在尝试运行我的应用程序时不断收到上述错误,无法弄清楚我没有添加的软件包。

在添加此文档之前,服务器运行良好,因此我希望这是此文档的问题,而不是其他问题。

它是一个称为节点调度器的 npm

var express = require('express');
var router = express.Router()
var path = require('path');
var bodyParser = require('body-parser');
var db = require('mongoskin').db("localhost/awl-loan-system", { w: 0});
db.bind('event');

var app = express();
app.use(express.static(path.join(__dirname, 'public')));
app.use(express.bodyParser());

app.get('/init', function(req, res){
db.event.insert({ 
text:"My test event A", 
start_date: new Date(2013,8,1),
end_date:   new Date(2013,8,5)
});
db.event.insert({ 
text:"My test event B", 
start_date: new Date(2013,8,19),
end_date:   new Date(2013,8,24)
});
db.event.insert({ 
text:"Morning event", 
start_date: new Date(2013,8,4,4,0),
end_date:   new Date(2013,8,4,14,0)
});
db.event.insert({ 
text:"One more test event", 
start_date: new Date(2013,8,3),
end_date:   new Date(2013,8,8),
color: "#DD8616"
});
res.send("Test events were added to the database")
});

app.get('/data', function(req, res){
db.event.find().toArray(function(err, data){
//set id property for all records
for (var i = 0; i < data.length; i++)
data[i].id = data[i]._id;
//output response
res.send(data);
});
});

app.post('/data', function(req, res){
var data = req.body;
var mode = data["!nativeeditor_status"];
var sid = data.id;
var tid = sid;
delete data.id;
delete data.gr_id;
delete data["!nativeeditor_status"];

function update_response(err, result){
if (err)
mode = "error";
else if (mode == "inserted")
tid = data._id;
res.setHeader("Content-Type","text/xml");
res.send("<data><action type='"+mode+"' sid='"+sid+"' tid='"+tid+"'/>
</data>");
}
if (mode == "updated")
db.event.updateById( sid, data, update_response);
else if (mode == "inserted")
db.event.insert(data, update_response);
else if (mode == `enter code here`"deleted")
db.event.removeById( sid, update_response);
else
res.send("Not supported operation");
});

返回此错误

D:One31ClientsA W Lymnnode_modulesexpresslibexpress.js:107
throw new Error('Most middleware (like ' + name + ') is no longer bundled 
with Express and must be installed separately. Please see 
https://github.com/senchalabs/connect#middleware.');
^
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 (D:One31ClientsA W 
Lymnnode_modulesexpresslibexpress.js:107:13)
at Object.<anonymous> (D:One31ClientsA W Lymnroutescalendar.js:12: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.require (module.js:497:17)
at require (internal/module.js:20:19)
at Object.<anonymous> (D:One31ClientsA W Lymnroutesindex.js:6: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.require (module.js:497:17)

有什么帮助吗?

您已经包含单独的body-parser模块,因此请使用bodyParser.urlencoded({ extended: false })/bodyParser.json()而不是express.bodyParser()

您需要通过运行来单独安装正文解析器

npm i body-parser -S

-S 标志将包添加到 package.json 文件中

最新更新