Plasmo 0.90.5 Firefox MV3生产构建消息传递报错求助
解决Plasmo 0.90.5构建Firefox MV3扩展时内容脚本未加载的问题
核心问题定位
你碰到的本质是Plasmo生产构建时,内容脚本的注入逻辑或打包配置在Firefox MV3环境下出现异常,导致脚本没加载,进而触发消息通信失败的报错Uncaught (in promise) Error: Could not establish connection. Receiving end does not exist.,而开发模式因为有热重载和调试机制,规避了这个问题。
具体修复方案
- 检查内容脚本匹配规则:Plasmo生产构建可能对
matches规则做了优化,Firefox MV3对通配符的解析和Chrome有差异。如果用了*://*/*,拆成https://*/*和http://*/*分开配置,避免合并通配符导致的解析异常。 - 验证生产打包路径:打开Firefox扩展调试工具的「内容脚本」面板,确认脚本的实际加载路径是否正确。如果路径错误,检查
plasmo.config.ts的build配置,确保target: "firefox-mv3"时的输出路径配置无遗漏或错误。 - 添加Firefox专属配置:在
plasmo.config.ts里明确指定Firefox MV3的构建配置,避免Plasmo用通用规则打包:export default defineConfig({ browsers: [ { name: "firefox", manifestVersion: 3 } ], // 其他原有配置 }) - 防止内容脚本被摇树优化移除:生产构建的Tree Shaking可能误删内容脚本的触发逻辑,在脚本顶部加一段无意义代码兜底:
也可以临时禁用优化排查:// 避免被生产构建优化移除 if (typeof window !== "undefined") { window._plasmo_cs_loaded = true; }export default defineConfig({ build: { minify: false, treeShake: false } }) - 清理构建缓存重编:执行
plasmo clean清空缓存后,再重新运行plasmo build --target=firefox-mv3,避免旧缓存导致的配置异常。
内容的提问来源于stack exchange,提问作者Adib Zaini
相关产品推荐
相关产品推荐

