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

Kiwi Browser(Chromium 120)MV3扩展Service Worker注册失败及导入错误求助

问题解决方案

核心问题分析

  1. ES模块语法限制:静态import语句必须放在代码顶层,不能嵌套在try/catch或其他代码块中,违反此规范会直接导致Service Worker注册失败。
  2. 路径错误:background.js位于scripts目录下,导入同目录的rosafeutility.js时,相对路径应为./rosafeutility.js而非./scripts/rosafeutility.js;同时需确认manifest.json中service_worker的路径指向正确。
  3. 工具脚本语法/逻辑问题:原rosafeutility.js存在对象未闭合、Promise未正确调用resolve的问题,会导致模块加载失败。

具体修复步骤

1. 修正manifest.json配置

确保service_worker路径正确,同时添加必要权限:

{
  "manifest_version": 3,
  "name": "RoSafe",
  "version": "0.1.0",
  "permissions": ["storage"], // 新增storage权限,适配chrome.storage.local的调用
  "background": {
    "service_worker": "scripts/background.js", // 修正路径指向scripts目录下的background.js
    "type": "module"
  }
}

2. 调整background.js的导入方式

  • 静态导入(推荐):将import移至代码顶层,使用正确的相对路径:
// 顶层静态导入,路径指向同目录的rosafeutility.js
import * as RoSafeUtility from './rosafeutility.js';

chrome.runtime.onInstalled.addEventListener((info) => {
  if (info.reason === "install") {
    console.log("test");
    // 测试模块导入是否成功
    console.log(RoSafeUtility.RoSafeStorage);
  }
});
  • 动态导入(需捕获错误时使用):如果需要处理模块加载失败的场景,使用返回Promise的动态import():
(async () => {
  try {
    const RoSafeUtility = await import('./rosafeutility.js');
    console.log("模块导入成功");
  } catch (e) {
    console.error("模块加载失败:", e);
  }
})();

chrome.runtime.onInstalled.addEventListener((info) => {
  if (info.reason === "install") {
    console.log("test");
  }
});

3. 修复rosafeutility.js的语法与逻辑

使用修正后的代码,确保语法闭合且Promise正常resolve:

export const RoSafeStorage = {
  trySetData: function(data) {
    return new Promise((success, fail) => {
      chrome.storage.local.set(data)
        .then(() => {
          success({ success: "true" }); // 正确调用Promise的resolve函数
        })
        .catch(err => {
          fail(err); // 添加错误捕获,调用reject函数
        });
    });
  }
};
  
export class RosafeLocalData {
  constructor(data) {
    this.isNewUser = data.isNewUser;
    this.settings = data.settings;
  }
}

验证方法

  1. 重新加载扩展
  2. 打开扩展的后台页面调试面板(chrome://extensions/ → 扩展详情 → 查看视图 → 后台页面)
  3. 检查控制台日志,确认无错误且test日志正常输出

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.04 18:10:56