Manifest V3扩展迁移遇问题:Service Worker注册失败及JSON解析错误求助
Manifest V3迁移:Service Worker错误排查与修复
错误1:Service worker registration failed. Status code: 15
这个错误基本都是Manifest配置或文件路径问题,按以下步骤排查:
- 检查
manifest.json中的service_worker字段:路径必须是相对于扩展根目录的正确路径,比如"service_worker": "sw.js",不能写./sw.js这类相对路径,也不能拼写错误。 - 确认
manifest.json的manifest_version字段是3,且name、version这类必填字段完整无缺。 - 检查Service Worker文件(比如
sw.js)是否存在于指定路径,文件本身有没有低级语法错误(比如括号不闭合、引号漏写)。 - 排查扩展权限:如果Service Worker用到了
storage、declarativeNetRequest这类API,必须在manifest.json的permissions字段中声明。
错误2:Uncaught SyntaxError: Unexpected token 'o', "[object Promise]" is not valid JSON
这个错误核心是把Promise对象当成JSON字符串传给了JSON.parse(),常见场景和修复:
- 比如你写了类似这样的错误代码:
正确写法应该用// 错误:直接用chrome.storage.get的返回值(Promise)去解析JSON const data = JSON.parse(chrome.storage.local.get('userData'));await或.then()处理Promise,拿到实际数据后再操作:// 正确写法(需在async函数内) const result = await chrome.storage.local.get('userData'); const data = result.userData; // 如果存储的是JSON字符串,再执行JSON.parse(data) - 排查所有调用
JSON.parse()的地方,确保传入的是字符串类型,而非Promise、对象这类非字符串值。
无法打开Inspect View的临时调试方案
如果Service Worker注册失败看不到Inspect链接,可以:
- 手动检查
sw.js语法:把代码复制到Chrome控制台(F12)运行,看是否有语法报错。 - 修复Manifest配置和Service Worker的语法错误后,重新加载扩展(chrome://extensions/里点击刷新按钮),注册成功后就能看到Inspect链接。
- 也可以直接在Chrome地址栏输入
chrome://serviceworker-internals/,找到你的扩展对应的Service Worker,点击“Inspect”尝试调试。
内容的提问来源于stack exchange,提问作者bland.life
相关产品推荐
相关产品推荐

