Error handling 捕获express不工作中的所有错误

Error handling 捕获express不工作中的所有错误,error-handling,express,Error Handling,Express,我想为所有未单独处理的错误提供一个error.ejs文件 当我从mongoose user.save()获得重复的密钥错误时,此代码不会执行任何操作 app.js app.use(function(err, req, res, next){ res.status(500); res.render('error', { error: "Woops, we encountered an error..." }); }); routes/index.js user.save(functio

我想为所有未单独处理的错误提供一个error.ejs文件

当我从mongoose user.save()获得重复的密钥错误时,此代码不会执行任何操作

app.js

app.use(function(err, req, res, next){
  res.status(500);
  res.render('error', { error: "Woops, we encountered an error..." });
});
routes/index.js

user.save(function(err){
    if ( err ) throw err;
});
下面的示例给出了以下错误:捕获异常:[ReferenceError:next未定义]

user.save(function(err){
    if ( err ) next(err);
});
你的片段

user.save(function(err){
    if ( err ) next(err);
});
大概是在一个有函数(req,res)的路由内

您需要做的是对该函数进行“下一步”

function MyRoute( req, res, next ) {
  user.save(function(err){
    if ( err ) 
      return next(err);

    // carry on here doing whatever
  });
}

app.get('/some/route', MyRoute);

不要扔它们
next(err)
我需要在next(err)下返回吗?当然,或者您可以执行if/elsenext(err)告诉我next()不存在。因为您没有将
user.save
放在中间件中。当然,
next
没有定义。。。