Google Cloud Functions Node.js 错误报告 - 未记录未处理的拒绝
Google Cloud Functions Node.js Error Reporting - Unhandled Rejections not being logged
我有一个 Node.js 云功能,我正在尝试收到未处理拒绝的警报。如果我抛出未处理的拒绝并导致我的 index.js
入口点崩溃,该错误会显示在错误报告中(尽管由于某种原因我没有收到通知)。这也显示为日志级别“严重”:
如果我在同一 Cloud Function(由 index.js
导入)的不同 .js 文件中抛出相同的未处理拒绝,它不会显示为“严重”日志级别和错误从未在错误报告中报告:
确保我捕获整个 Cloud Function 中所有未处理的拒绝(并确保我收到警报)的正确方法是什么?这就是我在 index.js
入口点初始化错误报告的方式:
const {ErrorReporting} = require('@google-cloud/error-reporting');
const errors = new ErrorReporting({
reportUnhandledRejections: true
});
我从错误报告团队那里得到了关于这个 github 问题的说明:https://github.com/googleapis/nodejs-error-reporting/issues/548。
最后,这可能是因为我只是在我的主 index.js
中初始化我的错误报告对象,而不是将它传递给或在我的其他 .js
文件中再次这样做(其中发生实际未处理的拒绝)。一种解决方法是将我的整个 index.js
代码包装在 try / catch(e)
中,并在 catch(e) 块中放入 errors.report(e)
。然后,即使在执行期间另一个文件中发生未处理的拒绝,我也会在错误报告中收到通知。
我有一个 Node.js 云功能,我正在尝试收到未处理拒绝的警报。如果我抛出未处理的拒绝并导致我的 index.js
入口点崩溃,该错误会显示在错误报告中(尽管由于某种原因我没有收到通知)。这也显示为日志级别“严重”:
如果我在同一 Cloud Function(由 index.js
导入)的不同 .js 文件中抛出相同的未处理拒绝,它不会显示为“严重”日志级别和错误从未在错误报告中报告:
确保我捕获整个 Cloud Function 中所有未处理的拒绝(并确保我收到警报)的正确方法是什么?这就是我在 index.js
入口点初始化错误报告的方式:
const {ErrorReporting} = require('@google-cloud/error-reporting');
const errors = new ErrorReporting({
reportUnhandledRejections: true
});
我从错误报告团队那里得到了关于这个 github 问题的说明:https://github.com/googleapis/nodejs-error-reporting/issues/548。
最后,这可能是因为我只是在我的主 index.js
中初始化我的错误报告对象,而不是将它传递给或在我的其他 .js
文件中再次这样做(其中发生实际未处理的拒绝)。一种解决方法是将我的整个 index.js
代码包装在 try / catch(e)
中,并在 catch(e) 块中放入 errors.report(e)
。然后,即使在执行期间另一个文件中发生未处理的拒绝,我也会在错误报告中收到通知。