【问题标题】:Google Cloud Functions Node.js Error Reporting - Unhandled Rejections not being loggedGoogle Cloud Functions Node.js 错误报告 - 未记录未处理的拒绝
【发布时间】:2021-03-30 02:20:06
【问题描述】:

我有一个 Node.js 云函数,并试图提醒未处理的拒绝。如果我抛出未处理的拒绝并导致我的index.js 入口点崩溃,则错误报告中会显示错误(尽管由于某种原因我没有收到通知)。这也显示为“关键”日志级别:

如果我在同一个云函数(由 index.js 导入)的不同 .js 文件中抛出相同的未处理拒绝,它不会显示为日志级别“严重”,并且永远不会报告错误错误报告:

确保我在整个 Cloud Function 中捕获所有未处理的拒绝(并确保我收到警报)的正确方法是什么?这就是我在 index.js 入口点初始化错误报告的方式:

const {ErrorReporting} = require('@google-cloud/error-reporting');

      const errors = new ErrorReporting({
        reportUnhandledRejections: true
      });

【问题讨论】:

  • 您是否在代码中使用 catch() 来告诉 Cloud Functions 您捕获了未处理的拒绝,如 here 所示?
  • 谢谢,实际上我的错误对象是在我的 index.js 中实例化的,但我没有将它传递给我的应用程序中的其他文件,因此没有收到通知。我会更新我的解决方案。
  • 如果可能的话,如果您使用找到的解决方案创建了一个答案,那将是理想的:)
  • 完成,我已经回答了问题:)

标签: node.js google-cloud-platform google-cloud-functions google-cloud-error-reporting


【解决方案1】:

我从错误报告团队那里得到了关于这个 github 问题的澄清:https://github.com/googleapis/nodejs-error-reporting/issues/548

最后,这可能是因为我只是在我的主 index.js 中初始化我的错误报告对象,而不是在我的其他 .js 文件中传递或再次这样做(实际发生未处理的拒绝) .一种解决方法是将我的整个index.js 代码包装在try / catch(e) 中,并在catch(e) 块中放入errors.report(e)。然后,即使在执行期间在另一个文件中发生未处理的拒绝,我也会在错误报告中得到通知。

【讨论】:

    猜你喜欢
    • 2019-08-07
    • 1970-01-01
    • 2018-10-16
    • 2017-06-08
    • 2018-01-18
    • 2020-11-30
    • 1970-01-01
    • 1970-01-01
    • 2017-06-04
    相关资源
    最近更新 更多