向Mac App Store部署Safari网页扩展时报manifest.json损坏错误
故障原因
你遇到的报错核心是Safari扩展的manifest.json存在语法问题,本地调试的解析器(Chrome、Safari本地开发模式)对JSON语法容错率更高,但是App Store的验证解析器严格遵循JSON规范,不允许非法语法。
修复方案
- 移除JSON中多余的尾随逗号:现有manifest中有两处非法的末尾逗号,分别是
background.page属性后、permissions数组最后一项后,JSON规范不允许对象/数组最后一项后加逗号。 - 确认manifest.json文件为UTF-8无BOM编码,无不可见隐藏字符。
- 确认所有在manifest中声明的资源路径(图标、js、html文件)和扩展包内的实际路径完全一致,注意大小写敏感。
- 确认Xcode中manifest.json的编译配置为「Copy Bundle Resources」,且输出到扩展bundle的根目录,无嵌套路径。
修复后的完整manifest.json代码
{ "author": "Author Name", "background": { "page": "index.html" }, "version" : "1.0", "browser_action": { "default_icon": "assets/img/logo-64-disabled.png", "default_title": "Title" }, "content_scripts": [ { "js": ["assets/js/index.js", "assets/js/content.js"], "matches": ["<all_urls>"] } ], "content_security_policy": "script-src 'self' https://cdnjs.cloudflare.com; object-src 'self'", "default_locale": "en", "description": "Description", "homepage_url": "https://example.com", "icons": { "128": "assets/img/logo-128.png", "16": "assets/img/logo-16.png", "32": "assets/img/logo-32.png", "48": "assets/img/logo-64.png", "64": "assets/img/logo-64.png" }, "manifest_version": 2, "name": "Name", "options_ui": { "open_in_tab": false, "page": "assets/options.html" }, "permissions": [ "contextMenus", "tabs", "activeTab", "webNavigation", "storage", "<all_urls>" ], "short_name": "Name", "web_accessible_resources": ["assets/*"] }
内容的提问来源于stack exchange,提问作者Yuvraj Singh
相关产品推荐
相关产品推荐

