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

Chrome扩展Manifest V3中如何在Service Worker导入Browserify脚本?

解决方案

方法1:让Browserify输出ES模块

默认Browserify打包产物是CommonJS模块,而你的background.js是ES模块类型,直接导入会导致导出结构不兼容。需修改打包配置输出ES模块:

  • 先安装适配插件:
    npm install browserify-esm --save-dev
    
  • 调整打包命令:
    browserify main.js -p browserify-esm -o bundle.js
    
  • 修改background.js的导入方式,直接获取默认导出:
    import unique from './bundle.js';
    console.log(unique); // 可正常获取uniq函数
    

方法2:在ES模块中兼容CommonJS产物

如果不想修改打包流程,可利用Service Worker支持的createRequireAPI来加载CommonJS模块:

import { createRequire } from 'module';
const require = createRequire(import.meta.url);

const unique = require('./bundle.js');
console.log(unique); // 正常获取目标函数

注意事项

  • 确保bundle.js的相对路径在background.js中正确,Chrome扩展资源路径以manifest文件位置为基准。
  • 确认Chrome版本足够新,Service Worker对ES模块的支持需Chrome 92及以上版本。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.24 14:52:43