【发布时间】:2016-04-08 12:36:47
【问题描述】:
当我发布表单时,我在控制台上收到 500 错误,上面写着:POST/items/sprinkler 500 angular.js:10766。
在我的节点控制台中,错误显示:Error: Failed to lookup view "error" in views directory。
但我可以将数据插入我的数据库。之后,这不会运行-exec(function(err, item)。我该怎么做?
mainapp/routes/items.js
router.post('/sprinkler', function(req, res) {
Item.create(req.body).exec(function(err, item) {
console.log("printed")
res.json(item)
});
});
我的错误处理程序看起来像这样(来自 express 本身):
if (app.get('env') === 'development') {
app.use(function(err, req, res, next) {
res.status(err.status || 500);
console.log("message from error handler:")
res.render('error', {
message: err.message,
error: err
});
});
}
【问题讨论】:
-
您的服务器正在尝试呈现错误页面(可能是因为您的处理程序中出现错误,也可能是验证问题?),但由于缺少错误模板而无法呈现。您应该修复您的 Express 应用程序的错误处理程序,或者将其删除,这样它会导致您的服务器因实际错误而崩溃。
-
我试着写这个'if (err) { console.log(err); res.send(500); } 其他 { 控制台.log(保存); res.send(保存); }` 但它显示相同。我还在视图/500 中添加了一个错误页面,但它再次显示相同的错误。
-
错误发生在该代码之前。我说的是全局 Express 错误处理程序,记录在 here。
-
当我刷新页面时,保存的数据会按原样返回到我的视图中。我发帖时仍然出错。
-
修复您的快速错误处理程序,以便您可以收到错误消息。在那之前,没有人可以帮助你。
标签: angularjs node.js mongodb express mongoose