the*_*oop 4 crash error-handling node.js express
我试图让我的http api服务器中的错误处理正常工作,我不明白节点的错误处理行为.
我已经定义了我自己的错误对象,如下所示:
function ServerError(statusCode, err, message) {
this.status = statusCode;
if (err != undefined) {
this.err = err;
if (message != undefined) {
this.message = message;
}
else {
this.message = err.message || err;
}
}
}
ServerError.prototype = new Error();
Run Code Online (Sandbox Code Playgroud)
我在中间件或处理程序中使用这样的对象:
function forceError() {
return function(req, res, next) {
next(new ServerError(500, "Internal error!"));
}
}
Run Code Online (Sandbox Code Playgroud)
如果未定义任何处理程序,则会将此错误打印到控制台并在响应正文中返回.这种事情TypeErrors和我自己的错误一样.这很糟糕,因为它包含堆栈跟踪和文件名/路径.
为什么快递返回堆栈跟踪?我认为默认行为只是崩溃,因此不会将服务器上的任何信息泄露给客户端.
从你的代码和使用next,我假设你使用快递,所以,这是一个明确的问题.Express将默认仅在开发模式下使用stacktraces提供错误,同时在生产模式下记录但不提供服务.
尝试在生产模式下运行您的应用:
$ NODE_ENV=production node app.js
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
3628 次 |
| 最近记录: |