Firefox扩展加载manifest.json报position 6位置意外冒号错误如何解决
"position 6"的含义
JSON解析的位置计数默认从文件第一个字符开始,以0为起始值递增,你遇到的position 6就是manifest.json文件中从首字符开始数的第7个字符,对应你当前代码里第一个键值对"name":"My First Firefox Extension"里的冒号:。
报错原因是你当前的manifest.json没有遵循JSON的基本规范:整个JSON内容必须包裹在一对大括号{}中,解析器读取到第6位的冒号时,还没识别到外层对象的起始标记{,因此判定该字符非法。
没有提示具体错误行号的原因
Firefox的扩展manifest解析逻辑会先校验JSON的基础结构合法性,当文件连最基础的外层对象结构都缺失时,解析流程会在基础校验阶段直接终止,还未进入行级语法分析步骤,因此只会输出字节位置错误,不会返回行号信息。
Chrome可正常运行的原因
Chrome的扩展加载器对manifest的非标准写法容忍度更高,会自动补全缺失的外层大括号等基础语法缺陷,但Firefox严格遵循JSON规范和浏览器扩展的标准校验逻辑,不兼容这类语法错误。
修复方案
你只需要在现有manifest内容的最外层加上一对大括号即可,修复后的完整代码如下:
{ "name":"My First Firefox Extension", "description":"My First Firefox Test Extension", "manifest_version": 2, "browser_action": { "icons": { "16":"icons/upsellblockicon16x16.png", "32":"icons/upsellblockicon32x32.png", "48":"icons/upsellblockicon32x32.png" }, "default_popup":"html/popup.html" } }
另外注意你原有代码中description字段的内容存在拼写错误Firest,已在上文同步修正,避免扩展信息展示异常。
内容的提问来源于stack exchange,提问作者Jago
相关产品推荐
相关产品推荐

