0

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

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

Bugsnag设置文档建议配置

<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,如此处所建议

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

4

1 回答 1

2

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

对于扩展页面(背景/弹出),是的,您可以包含它,但是:

  1. 您需要声明一个允许此代码作为异常的 CSP。

  2. 您必须显式加载它https://,协议相对 URL//...失败,因为源具有chrome-extension://...URL。

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

所以你需要用 注入它executeScript,之前用 XHR 下载过它(你不能指定一个远程 URL,executeScript但你可以指定一个包含代码的字符串)。显然,您需要使用替代方法设置 API 密钥。


请注意,Bugsnag提到在本地捆绑代码是一种可能性:

如果您想避免额外的阻塞请求,您可以在资产编译过程中包含 javascript,以便将其内联到您现有的脚本文件中。唯一需要确定的是,在您的 onload 处理程序运行之前包含了 Bugsnag。

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

于 2016-03-17T18:08:57.343 回答