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

Firefox插件内容脚本导入模块报错,求解决方案及Popup脚本处理建议

解决Firefox扩展中ES模块的语法错误问题

嘿,这个问题我太熟悉了——你遇到的SyntaxError本质是Firefox扩展默认把脚本当作普通非模块脚本处理,不支持import/export语法。得通过配置声明模块类型,同时调整导入路径,就能搞定。下面分两部分解决:

1. 修复内容脚本(sc_cont.js)的模块配置

第一步:更新manifest.json的content_scripts配置

你之前直接把模块脚本加进content_scripts数组是没用的,反而要给主内容脚本声明模块类型。打开manifest.json,找到content_scripts数组,给对应的脚本项加上"type": "module":

"content_scripts": [
  {
    "matches": ["<all_urls>"], // 这里保留你的原有匹配规则即可
    "js": ["sc_cont.js"],
    "type": "module" // 关键:告诉Firefox这是ES模块
  }
]

第二步:修正sc_cont.js的导入路径

内容脚本的上下文里,相对路径的基准是扩展根目录,所以你的导入要改成从根目录出发的路径:

// sc_cont.js
import { xyz } from "/modules/sc_de.js";

(注意开头的斜杠,代表从扩展根目录定位modules文件夹)

2. 处理弹窗脚本(popup/action.js)的模块支持

弹窗脚本同样需要声明为模块,你得修改popup/action.html里的脚本引用:
原来的写法:

<script src="action.js"></script>

改成带模块类型的声明:

<script type="module" src="action.js"></script>

然后在action.js里导入模块时,路径要基于popup文件夹的位置,用相对路径往上跳一级:

// popup/action.js
import { xyz } from "../modules/sc_de.js";

额外注意事项

  • 确保你的manifest.json的manifest_version是3(Firefox对MV3的ES模块支持更完善,MV2也支持但配置逻辑一致)。
  • 不需要把modules/sc_de.js加到content_scripts或者其他脚本数组里,它是被导入的依赖模块,只要在扩展文件结构里存在就行。

这样调整后,你的导入导出语法就不会再报错,内容脚本和弹窗脚本都能正常共享sc_de.js里的代码了。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.27 07:29:35