You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Chrome扩展Service Worker注册失败(状态码15)求助

解决Chrome扩展Manifest V3中Service Worker注册失败(错误码15)的问题

核心原因

错误码15表示Chrome无法将你的Service Worker识别为ES模块——Manifest V3默认不会将Service Worker当作模块处理,仅靠.mjs后缀不足以触发模块加载模式。

解决方案步骤

1. 修改Manifest配置,声明模块类型

在manifest.json的background字段中添加"type": "module",这是让Chrome将脚本当作ES模块加载的必要配置:

{
  // ... 其他原有配置
  "background": {
    "service_worker": "background.mjs",
    "type": "module"
  },
  // ... 其他原有配置
}

2. 修复Firebase模块导入问题

Chrome扩展的Service Worker无法直接访问node_modules目录,你需要调整Firebase的导入方式:

  • 方案A:使用Firebase CDN直接导入
    修改background.mjs中的导入语句,替换为官方CDN链接(可根据需求更换版本号):
    import { initializeApp } from 'https://www.gstatic.com/firebasejs/9.23.0/firebase-app.js';
    import { getFirestore } from 'https://www.gstatic.com/firebasejs/9.23.0/firebase-firestore.js';
    
    chrome.runtime.onInstalled.addListener(() => {
      // 替换为你的实际Firebase项目配置
      const firebaseConfig = {
        apiKey: "YOUR_API_KEY",
        authDomain: "YOUR_AUTH_DOMAIN",
        projectId: "YOUR_PROJECT_ID",
        storageBucket: "YOUR_STORAGE_BUCKET",
        messagingSenderId: "YOUR_SENDER_ID",
        appId: "YOUR_APP_ID"
      };
    
      const app = initializeApp(firebaseConfig);
      const db = getFirestore(app);
    });
    
  • 方案B:打包Firebase模块到扩展资源
    使用Webpack、Rollup等打包工具,将Firebase依赖与你的background.mjs打包为单个ES模块文件,确保打包后的文件路径与Manifest中声明的一致。

3. 验证配置有效性

  • 务必将firebaseConfig中的占位符替换为你项目的真实配置,否则Firebase初始化会失败。
  • 重新加载扩展:在Chrome扩展管理页面开启开发者模式,点击「重新加载」按钮,查看是否仍有注册错误。

额外排查点

如果问题仍存在,可通过Chrome扩展开发者工具(扩展管理页面→「检查视图」→「检查background页面」)查看控制台的详细错误日志,进一步定位路径、权限或依赖问题。

内容的提问来源于stack exchange,提问作者Christian Sugarol

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.11 20:55:16