处理任何错误Nodejs并且不返回堆栈跟踪

时间:2017-07-12 01:43:23

标签: node.js error-handling

问题很简单,但在找到Passport进行测试后,我找不到可行的解决方案。

我们说我有一个像https://localhost/auth/google/callback

这样的回调路线

现在我得到一个堆栈跟踪,如果我在这里抛出垃圾参数,然后显示目录结构等信息,这显然是不合适的。我不能盲目地依赖每条新路线来妥善处理错误。

如果在NodeJS中出现任何错误,有没有办法禁用堆栈跟踪响应?

我尝试了以下内容:

app.use((err, req, res, next) => { 
    if (! err) {
        return next();
    }    

    res.status(500);
    res.send('500: Internal server error');
});

这对PassportJS中使用的TokenError: Code was already redeemed.无效。

这甚至可能吗?显然这只适用于生产环境。

1 个答案:

答案 0 :(得分:2)

您需要将NODE_ENV设置为生产以禁用堆栈跟踪,您可以将其更改为环境变量

set NODE_ENV=production

或者如果它不方便在.js本身中执行如下操作。

process.env.NODE_ENV = 'production';