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

1N5*_*818 1 error-handling node.js

问题很简单,但我找不到在针对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');
});
Run Code Online (Sandbox Code Playgroud)

这不适TokenError: Code was already redeemed.用于 PassportJS。

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

Kal*_*mel 5

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

set NODE_ENV=production

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

process.env.NODE_ENV = 'production';
Run Code Online (Sandbox Code Playgroud)