在Express中,我可以通过将错误传递给next
函数回调来处理错误。如果我已经注册了错误处理中间件函数,则会调用该错误。
如果没有中间件来处理错误,或者该中间件是否也通过next
传递错误,那么错误会在哪里?
我没有在'uncaughtException'或'unhandledRejection'中看到错误。
(我正在使用Express v4.16.2)
答案 0 :(得分:0)
我认为答案是它们被吞下,因此错误消息中可能包含的敏感信息不会被记录。您应该编写自己的中间件来为您的应用程序做一些有用的事情。我相信在以前的版本中默认行为已经改变,因此请检查您所使用的版本并查看预期的内容。
答案 1 :(得分:0)
我在express docs找到了答案。
Express附带内置错误处理程序,可处理应用程序中可能遇到的任何错误。此缺省错误处理中间件函数将添加到中间件函数堆栈的末尾。
如果您将错误传递给next()并且您没有在错误处理程序中处理它,它将由内置错误处理程序处理;错误将通过堆栈跟踪写入客户端。堆栈跟踪不包含在生产环境中。