我正在关注this tutorial,它使用express和mongo创建待办事项列表。我收到以下错误:
body-parser deprecated undefined extended: provide extended option server.js:12:20
C:\todoListApi\api\controllers\todoListController.js:4
var Task = mongoose.model('Tasks');
^
ReferenceError: mongoose is not defined
at Object.<anonymous> (C:\todoListApi\api\controllers\todoListController.js:4:12)
...
我尝试使用this post修复的body-parser deprecated
错误无济于事(尽管它似乎更像是一个警告)。
猫鼬错误没有任何意义,因为猫鼬id直接在它之前定义:
var mongooose = require('mongoose').Mongoose,
Task = mongoose.model('Tasks');
但它也在server.js中定义:
var express = require('express'),
app = express(),
port = process.env.PORT || 3000,
mongoose = require('mongoose'),
Task = require('./api/models/todoListModel'),
bodyParser = require('body-parser');
mongoose.Promise = global.Promise;
mongoose.connect('mongodb://localhost/Tododb');
app.use(bodyParser.urlencoded({ extended: true }));
app.use(bodyParser.urlencoded(bodyParser.json()));
var routes = require('./api/routes/todoListRoutes');
routes(app);
app.listen(port);
console.log('todo list RESTful API server started on: ' + port)
我在原始教程中将其更改为添加.Mongoose
,因为此帖说它可以正常工作。
答案 0 :(得分:1)
正如Jérôme在其评论中所述,您的mongoose变量被定义为mongooose
,但在整个代码中被访问为mongoose
而没有第3个o
。< / p>
对于正文解析器问题,您不要在bodyParser.json()
中间件中包装bodyParser.urlencoded()
。 bodyParser.json()
正在返回自己的中间件函数,需要直接传递给快速服务器。
app.use(bodyParser.urlencoded({extended: true})
app.use(bodyParser.json())