Chrome扩展导入模块至background.js遇Service worker注册失败(状态码15)
Chrome扩展Service Worker注册失败(错误码15)解决办法
针对你在background.js中导入ES模块时出现的"Service worker registration failed. Status code: 15"错误,以下是具体排查和解决步骤:
1. 确保manifest.json正确配置Service Worker为模块类型
Chrome扩展的Service Worker要启用模块支持,必须在manifest的background字段中明确设置type: "module",而非仅在HTML中添加module属性。示例配置:
{ "manifest_version": 3, "background": { "service_worker": "background.js", "type": "module" }, // 其他扩展配置... }
2. 验证导入路径的完整性
Service Worker的ES模块导入要求完整的相对路径+文件后缀,不能省略.js后缀,也不能使用裸模块路径:
- 正确写法:
import { searchTransform, inputLang } from "./index.js"; - 错误写法:
import { searchTransform, inputLang } from "./index";(缺后缀)
同时确认index.js与background.js处于同一目录,若不在同一目录,需调整路径(如./src/index.js)。
3. 检查导出模块的规范
确保index.js使用标准ES模块导出语法,而非CommonJS:
// index.js 正确导出方式 export const searchTransform = () => { /* ... */ }; export const inputLang = "zh-CN";
若index.js内部还有其他导入,也要保证所有依赖都符合ES模块规范。
4. 验证内容安全策略(CSP)配置
Manifest V3的扩展页面(含Service Worker)的CSP必须允许script-src 'self',否则模块加载会被拦截。示例配置:
"content_security_policy": { "extension_pages": "script-src 'self'; object-src 'none';" }
5. 清除缓存并重新加载扩展
旧的Service Worker缓存可能导致异常,按以下步骤操作:
- 打开Chrome扩展管理页面(chrome://extensions/)
- 开启"开发者模式",找到你的扩展,点击"重新加载"按钮
- 或访问chrome://serviceworker-internals/,找到对应扩展的Service Worker,点击"Unregister"后重新加载扩展
内容的提问来源于stack exchange,提问作者Nikolai Alexander Verner
相关产品推荐
相关产品推荐

