2016-06-11 25 views
0

如何将快速错误讯息传递给客户端?将错误传递给客户端中的快件

app.use(errorHandler); 

function errorHandler(err, req, res, next) { 
    res.send(err); 
} 

app.post('/login', usernameIsValid, pwdIsValid, createToken); 

usernameIsValid我创建一个消息和状态new Error并调用next(err)。现在这绕过pwdIsValidcreateToken像它应该,但奇怪的是我的errorHandler记录错误没有console.log。我是否在某处使用默认错误处理程序?我如何关闭它?我已经尝试过NODE_ENV的生产和开发。

在客户端xhr.responseText是我的error.message +什么看起来像一个堆栈跟踪?我甚至试图发送err.message,但它看起来一样。

处理这种混乱的一种方法是使每个中间件(如果有错误)创建一个错误字符串,如req.data.err = "invalid username",然后确保每个后续中间件检查req.data.err是否存在字符串。但是,如果你传递一个错误next()和你没有错误处理程序处理它,这是地狱> _ <

回答

0

从Express文档site

繁琐,它会通过内置处理在错误处理程序;该错误将通过堆栈跟踪写入客户端。生产环境中不包含堆栈跟踪。

所以,如果你想避免堆栈跟踪,你只需要执行你的应用程序与NODE_ENV设置为生产。你的应用程序如下

运行:

$ NODE_ENV=production node file.js 
+0

NODE_ENV =生产没有帮助。我试过了。 –

0

我解决它。在所有其他路线之后,您需要应用错误处理程序app.use(errorHandler)最后的。这将禁用内置的错误处理程序。现在,您可能会向客户端传递相当多的错误消息。

了解更多here

编辑:process.env.NODE_ENV没关系。

相关问题