不断收到此错误: “清单是无效的JSON。行:1,列:1,意外的令牌。” 我不明白我的代码是什么问题?这是我到目前为止所做的:
{
"manifest_version": 2,
"name": "extension",
"version": "1.0",
"description": "My first Chrome extension.",
"browser_action": {
"default_icon": "icon.jpg",
"popup": "popup.html"
}
}
答案 0 :(得分:8)
我在Visual Studio 2010中使用Build Action:None设置了manifest.json文件属性。
在Visual Studio中更改为“内容”可确保在部署时传输文件。
也许你的问题类似。
修改强>
鉴于我的downvote,我认为我应该扩展并说我的观点是,鉴于在第1行,第1列有有效的json,你更有可能获得404 http响应而不是返回的实际json文件
所以也许文件不在正确的位置或服务器没有权限或其他什么,但上面是我的错误。不可否认,它可能对我的错误而言过于具体,而不是你的错误。
但是一般的观点仍然存在,更可能是因为Web服务器返回json文件的http响应,检查浏览器中网络日志中的响应。
答案 1 :(得分:4)
您的 browser_action 键似乎使用了错误的值。要指定弹出式模板,您必须使用 default_popup 。 它应该是:
{
"manifest_version": 2,
"name": "extension",
"version": "1.0",
"description": "My first Chrome extension.",
"browser_action": {
"default_icon": "icon.jpg",
"default_popup": "popup.html"
}
}
答案 2 :(得分:4)
在“网络”选项卡中检查manifest.json的Content-Type。这必须是 application / json 而不是 text / html 。
如果内容类型错误,则可能需要配置Web服务器的设置以正确提供 json 文件。
就我而言,我必须将其添加到nginx 启用站点的文件中:
位置〜*。(jpg | jpeg | gif | png | css | js | ico | xml | svg | json )$
答案 3 :(得分:2)
我知道这是一个老问题,但是如果上面接受的答案对某人不起作用,请务必检查manifest.json
的拼写和路径是否正确。我以前从一个简单的拼写错误中得到了同样的错误。简单的错误,但它发生了!
答案 4 :(得分:2)
在我的特定情况下,我在manifest.json
中添加了此内容:
"storage": {
"managed_schema": "storage.json"
}
但是我的storage.json
是空的。我必须使用以下内容编辑我的storage.json
文件:
{
"$schema": "http://json-schema.org/draft-03/schema#",
"type": "object",
"properties": {
"adminSettings": {
"title": "A valid JSON string compliant with backup format.",
"description": "All entries present will overwrite local settings.",
"type": "string"
}
}
}
但是,总的来说,这是我收到第1行第1列意外令牌误导性错误时的建议,该错误基本上转换为: JSON的一个或多个部分中有错误,可能有或无事可做该文件中包含语法。
manifest.json
文件的顶部,例如manifest_version
,name
,description
等。manifest.json
中。这就是我发现我的storage
块是问题所在的方式。我查看了另一个Chrome扩展程序,看看它们是如何工作的,并意识到了我的错误。答案 5 :(得分:1)
当清单为空或根本没有清单时,也会发生此错误。如果您使用一些框架,例如。角度来看,只需检查您的生产版本中是否有清单即可。如果不是,请在您的angular.json / angular-cli.json中将“ manifest.json”添加到资产数组。
示例:
"assets": ["assets", "favicon.ico", "manifest.json"]
答案 6 :(得分:0)
这已经过时了,但我遇到了同样的问题,发现我没有在我的脚本中使用标准双引号<uses-permission>
,我从official Google Doc
答案 7 :(得分:0)
请尝试将manifest.json文件另存为UTF8格式。
答案 8 :(得分:0)
由于扩展名(MIME类型),浏览器找不到清单。在Chrome DevTools>网络>标头>内容类型中,清单的内容类型必须与实际的清单文件扩展名(.json
或.webmanifest
)匹配。要解决404错误,您需要在web.config
中声明文件类型:
<staticContent>
<mimeMap fileExtension=".json" mimeType="application/json" />
<mimeMap fileExtension=".webmanifest" mimeType="application/manifest+json" />
</staticContent>
答案 9 :(得分:0)
我添加了crossorigin属性。
<link rel="manifest" crossorigin="use-credentials" href="%PUBLIC_URL%/manifest.json" />