Chrome 扩展集成的 Bugsnag 脚本放在哪里

Where to put Bugsnag scripts for Chrome Extension integration

我第一次开发 Chrome 扩展并尝试集成 Bugsnag js 错误报告。

我发现了很多 ,但我不明白如何将 bugsnag 实际加载到扩展中。 (例如,在后台脚本、内容脚本、background.html 页面或其他地方)。您是否编写代码将脚本标记插入页面?

Bugsnag setup docs 建议配置

<script src="//d2wy8f7a9ursnm.cloudfront.net/bugsnag-2.min.js"
     data-apikey="YOUR-API-KEY-HERE"></script>

我尝试将其添加到 background.html 页面,但没有成功。我还尝试将云端脚本添加到扩展中的内容和后台脚本,但无法加载它。

Uncaught ReferenceError: Bugsnag is not defined

同样,哪里是引用 bugsnag 脚本和修改 Bugsnag 对象的最佳位置(例如

Bugsnag.beforeNotify = function (error, metaData) {
    error.stacktrace = error.stacktrace.replace(/chrome-extension:/g, "chromeextension:");
}

允许扩展错误达到 bugsnag,如建议的那样 here

意识到这是一个非常基本的设置问题,但在为这个特定用例找到方向时遇到了一些麻烦。感谢您的任何建议!

您正在尝试包含外部脚本。这将是艰难的 - 扩展主要期望他们所有的资源都与他们捆绑在一起。

对于扩展页面 (background/popup),是的,您可以包含它,但是:

  1. 您需要declare a CSP允许此代码作为例外。

  2. 你必须显式地通过 https:// 加载它,相对协议 URL //... 失败,因为源有 chrome-extension://... URL.

对于内容脚本,它会更复杂。您不能使用标记方法,因为 <script> 标记中的任何内容都会转到页面上下文,而不是 content script context.

所以你需要用executeScript注入它,之前用XHR下载它(你不能为[指定一个远程URL =14=] 但您可以指定包含代码的字符串)。显然,您需要 set the API key 使用替代方法。


请注意 Bugsnag mentions 可能会在本地捆绑代码:

If you'd like to avoid an extra blocking request, you can include the javascript in your asset compilation process so that it is inlined into your existing script files. The only thing to be sure of is that Bugsnag is included before your onload handlers run.

因此,可以安全地忽略以上所有内容。但是否让脚本保持最新由您决定。