我尝试删除node_modules文件夹并通过npm命令再次下载,但没有任何效果。
我得到了:
无法找到模块'lodash / _overRest'
我正在使用npm ver 5.2并上传了错误和json文件的屏幕截图
const _ = require('lodash');
const express = require('express');
const bodyParser = require('body-parser');
const {
ObjectID
} = require('mongodb');
var {
mongoose
} = require('./db/mongoose');
var {
Todo
} = require('./models/todo');
var {
User
} = require('./models/user');
var app = express();
app.use(bodyParser.json());
app.post('/todos', (req, res) => {
var todo = new Todo({
text: req.body.text
});
todo.save().then((doc) => {
res.send(doc);
}, (e) => {
res.status(400).send(e);
});
});
app.get('/todos', (req, res) => {
Todo.find().then((todos) => {
res.send({
todos
});
}, (e) => {
res.status(400).send(e);
});
});
app.get('/todos/:id', (req, res) => {
var id = req.params.id;
if (!ObjectID.isValid(id)) {
return res.status(404).send();
}
Todo.findById(id).then((todo) => {
if (!todo) {
return res.status(404).send();
}
res.send({
todo
});
}).catch((e) => {
res.status(400).send();
});
});
app.delete('/todos/:id', (req, res) => {
var id = req.params.id;
if (!ObjectID.isValid(id)) {
return res.status(404).send();
}
Todo.findByIdAndRemove(id).then((todo) => {
if (!todo) {
return res.status(404).send();
}
res.send({
todo
});
}).catch((e) => {
res.status(400).send();
});
});
app.patch('/todos/:id', (req, res) => {
var id = req.params.id;
var body = _.pick(req.body, ['text', 'completed']);
if (!ObjectID.isValid(id)) {
return res.status(404).send();
}
if (_.isBoolean(body.completed) && body.completed) {
body.completedAt = new Date().getTime();
} else {
body.completed = false;
body.completedAt = null;
}
Todo.findByIdAndUpdate(id, {
$set: body
}, {
new: true
}).then((todo) => {
if (!todo) {
return res.status(404).send();
}
res.send({
todo
});
}).catch((e) => {
res.status(400).send();
})
});
app.listen(port, () => {
console.log(`Started up at port ${port}`);
});
module.exports = {
app
};
答案 0 :(得分:2)
我刚刚将lodash模块更新到最新版本。现在它工作得很好!!
答案 1 :(得分:1)
嗨我认为我们在安德鲁的tuto节点js面临同样的问题。只需升级或安装最新版本的lodash 4.17.5即可解决问题。