Firefox扩展开发求助:chrome.extension报Expected an object as the target scope错误
Firefox WebExtensions 报错排查:Expected an object as the target scope
嘿,我来帮你捋捋这个突然冒出来的WebExtensions报错问题!
先把你的问题细节理清楚:
两天前程序运行完全正常,今天在Firefox Developer Edition 60.0b2(64bit)里,弹窗页面的JavaScript代码触发了如下错误:
===== Error: Expected an object as the target scope Schemas.jsm:2641:15 let obj = Cu.createObjectIn(context.cloneScope); =====报错触发的场景很有意思:
- 如果代码里先写
chrome.extension;再写chrome;,完全没错误- 但单独写
chrome.extension;就会抛出上面的错误
可能的原因和解决办法:
- Firefox Beta版本的兼容性bug:你用的是Firefox 60.0b2,属于开发者预览版,本身可能存在WebExtensions API的稳定性问题。建议先升级到最新的Firefox Developer Edition版本,或者临时切换到Firefox稳定版测试,看看是不是版本本身的bug导致的。
- 页面初始化时机问题:弹窗页面的JavaScript如果在DOM还没完全加载完成时就访问
chrome.extension,可能会导致API的上下文环境没有正确建立,context.cloneScope变成无效值。你可以把相关代码放到DOMContentLoaded事件监听里,确保页面初始化完成后再调用API:document.addEventListener('DOMContentLoaded', () => { // 在这里访问 chrome.extension 或者 browser.extension console.log(chrome.extension); }); - 改用标准WebExtensions API:Firefox对
browser命名空间的支持比兼容层的chrome更完善,你可以尝试把chrome.extension替换成browser.extension,看看能不能绕过这个兼容层的问题。 - 排除外部干扰:临时禁用浏览器里的其他扩展,或者重置Firefox的开发者相关设置,排除其他扩展或者自定义设置对当前程序的影响。
内容的提问来源于stack exchange,提问作者二川村田
相关产品推荐
相关产品推荐

