Firefox中运行原生WebExtension遇清单字段警告,如何解决?
解决方法
1. 拆分两类Manifest文件
你肯定是把原生应用专属的Manifest字段(allowed_extensions、type、path)塞到WebExtension的manifest.json里了——Firefox的扩展清单根本不认这些字段,这就是警告的来源。
两类Manifest要各司其职:
- WebExtension的
manifest.json:只保留扩展本身的配置,比如名称、版本、权限(需添加"nativeMessaging")、后台脚本等,把那三个多余字段全部删掉。 - 单独创建一个原生应用的Manifest文件(比如命名为
com.example.native-host.json),专门存放allowed_extensions、type、path这些原生消息相关配置,示例格式如下:
{ "name": "com.example.native-host", "description": "原生消息测试主机", "path": "native-host.py", "type": "stdio", "allowed_extensions": ["{你的扩展ID}"] }
2. 将原生应用Manifest放到Firefox指定目录
Firefox只会在特定目录读取原生应用配置,对应系统的存放路径如下:
- Windows:进入
%APPDATA%\Mozilla\NativeMessagingHosts\,创建与Manifest文件名同名的文件夹,将Manifest放入其中。 - macOS:选择
~/Library/Application Support/Mozilla/NativeMessagingHosts/或/Library/Application Support/Mozilla/NativeMessagingHosts/ - Linux:选择
~/.mozilla/native-messaging-hosts/或/usr/lib/mozilla/native-messaging-hosts/
3. 确保扩展ID与配置匹配
allowed_extensions数组中必须填入你加载的WebExtension的ID:
- 若通过
about:debugging临时加载扩展,可在扩展详情页找到对应的ID。 - 想要固定ID,可在WebExtension的
manifest.json中添加以下配置:
"browser_specific_settings": { "gecko": { "id": "你的扩展ID@自定义域名.com" } }
4. 给原生应用脚本添加执行权限
path字段指向的脚本/程序必须具备可执行权限:
- Linux/macOS:在终端执行
chmod +x native-host.py赋予脚本执行权限。 - Windows:确保脚本关联了正确的解释器(比如Python),双击脚本可正常运行。
完成以上步骤后,重新通过about:debugging加载WebExtension,警告即可消除,原生消息功能也能正常运行。
内容的提问来源于stack exchange,提问作者Tamás Horváth
相关产品推荐
相关产品推荐

