Javascript 无法在我的node express应用程序中触发主错误处理程序
我使用的是node express(4.15.2),使用express generator函数创建的默认错误处理程序来处理错误 代码是:Javascript 无法在我的node express应用程序中触发主错误处理程序,javascript,node.js,express,Javascript,Node.js,Express,我使用的是node express(4.15.2),使用express generator函数创建的默认错误处理程序来处理错误 代码是: const app = express(); app.set('port', config.enviroment.portNumber); app.use(logger('dev')); app.use(bodyParser.json()); app.use(bodyParser.urlencoded({ extended: false })); app.
const app = express();
app.set('port', config.enviroment.portNumber);
app.use(logger('dev'));
app.use(bodyParser.json());
app.use(bodyParser.urlencoded({ extended: false }));
app.use(express.static(path.join(__dirname, config.client.app)));
app.post(config.route.postUploads, uploader.onUpload);
app.use(function (req, res, next) {
var err = new Error('Not Found');
err.status = 404;
next(err);
});
// error handler
app.use(function(err, req, res, next) {
// this function is never called
// set locals, only providing error in development
res.locals.message = err.message;
res.locals.error = req.app.get('env') === 'development' ? err : {};
// render the error page
res.status(err.status || 500);
res.render('error');
});
const server = app.listen(app.get('port'), () => {
const port = server.address().port;
});
在我的应用程序中,当我需要创建错误时,我会使用以下代码行:
new Error('Some custom error');
但从未调用错误处理程序
注意:错误处理程序放在最新的应用程序之后。请使用但放在应用程序之前。请听
您知道什么会导致此问题以及如何解决它吗?您需要将上述函数放在代码的最底层,因为路由的顺序很重要(请参见此)。另外,你需要像抛出新错误(“自定义错误”)一样抛出你的错误。我找到了解决问题的简单方法,基本上我必须使用
抛出新错误(“某些自定义错误”)代码>
一般来说,express遵循传递错误而不是抛出错误的方式,对于程序中的任何错误,最好将错误对象传递到“下一步”,并使用和错误处理程序,以便正确处理传递到下一步的所有错误。我编辑了我的问题,添加了完整的源代码,很遗憾,我无法使用您的答案解决此问题。。。还有其他想法吗?您是否使用生成的express.js应用程序,没有修改任何内容?控制台或浏览器的屏幕截图会有所帮助