0

我正在 Heroku 上使用大型 Node.js 应用程序,其日志记录由 Papertrail 维护。我有一个中央错误处理和日志记录功能,目前,它只是将错误记录到控制台,显示一个通用的“发生错误!” 对话框,并将客户端重定向到特定页面(取决于发生错误的位置)。但是 Papertrail 和 Heroku 都没有检测到这是一个真正的错误,如果它们发生,我也不会收到任何类型的通知或警报。

目前,这是我的功能:

utilities.errorLogger = (err) => {
    console.error(err);
};

我试图抛出错误,如下所示:

utilities.errorLogger = (err) => {
    throw new Error(err);
};

但是随后错误会显示给客户端,而不是被重定向,从而使最终用户感到困惑。类似地,将错误放在 try-catch 块中不会改变我目前拥有的任何内容(错误已记录但 Papertrail 或 Heroku 没有发现)。

utilities.errorLogger = (err) => {
    try {
        throw new Error(err);
    }
    catch (err) {
         console.error(err);
    }
};

我怎样才能默默地抛出一个错误,让 Papertrail 和 Heroku 接受并将其视为错误,而不需要将错误发送给客户端?我希望能够静默处理错误并在后台继续报告,而不是向客户端发送任何错误详细信息。

4

1 回答 1

0

终于找到答案了。我正在使用KeystoneJS,它带有一个我以前从未见过的默认错误处理程序;我现在已经对其进行了修改,以便在仍然能够记录错误的同时重定向人们。

于 2017-09-03T20:46:30.960 回答