【问题标题】:How to enable Rollbar in Browser JS when strict mode is global?当严格模式为全局时,如何在浏览器 JS 中启用 Rollbar?
【发布时间】:2025-12-18 16:10:02
【问题描述】:

我想将Rollbar 错误监控工具添加到用angularJS 编写的浏览器JS 应用程序中。在我们的浏览器应用程序中,javascript 的严格模式在全球范围内使用。

问题是,为了让我使用 Rollbar,我需要将 Rollbar 的代码插入到我的应用程序中。 JS的rollbar代码可以看这里:Rollbar Browser JS。不幸的是,该代码不支持 javascript 严格模式。当我运行应用程序时,滚动条会导致此错误:Uncaught TypeError: Cannot read property 'logger' of undefined

我该如何解决这个问题?如果已经全局定义,有没有办法禁用严格模式?全局禁用严格模式可能不是一种选择。我可以使用 Node.js 版本来监控浏览器应用程序吗?

【问题讨论】:

  • 在非严格模式下也会发生这种情况。
  • 它没有。多次尝试。如果我禁用严格模式,即使使用 this.logger 也能正常工作。如果我启用严格模式,那么当我用 window.logger 替换所有 this.logger 时它就可以工作了

标签: javascript angularjs error-handling strict rollbar


【解决方案1】:

我可以通过修改 Rollbar sn-p 代码来解决这个问题。我用 'window.logger' 替换了所有出现的 'this.logger',它开始工作,即使严格模式已打开。

【讨论】:

  • 更简单(且更易于维护)的修复方法是使用 (fuction(){ [...Rollbar code hoes here...]}).apply(window) 包装代码。那么升级 Rollbar 会更容易