【问题标题】:Manifest is not valid JSON. Line: 1, column: 1, Unexpected token清单不是有效的 JSON。行:1,列:1,意外令牌
【发布时间】:2016-02-18 21:16:53
【问题描述】:

不断收到此错误: “清单不是有效的 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"
    }
}

【问题讨论】:

  • 欢迎来到stackoverflow。你从哪里得到这个错误?看来您正在创建一个 Chrome 扩展程序。由于我不熟悉这些的开发,请选择一些吸引那些不仅知道某事的人的标签。关于 JSON,还有你所做的开发。
  • 我建议您使用十六进制编辑器并检查该文件。也许您的文件前面有一些不可打印的字符。
  • 我在尝试加载非结构化 json 字符串时遇到此错误。读者期待一个数组开始,但没有找到它。尝试用 [ ... ] 包围您的 json 字符串
  • 第二个@dellbertooo 的理论作为您包含的 JSON 作为 Chrome 扩展加载对我来说很好。
  • 为什么会受到保护?恕我直言,它只有 15 个赞成票,仅在非常具体的情况下才有意义,并且缺乏具体的答案。

标签: json google-chrome-extension


【解决方案1】:

我添加了它的工作的跨域属性。

<link rel="manifest" crossorigin="use-credentials" href="%PUBLIC_URL%/manifest.json" />

【讨论】:

  • 真的没有这个把戏,但它是哈哈,谢谢!
  • 就是这样!我尝试了其他所有方法,但这解决了我的问题
【解决方案2】:

我在 Visual Studio 2010 中使用 Build Action: None 设置了 manifest.json 文件属性。

在 Visual Studio 中更改为 Content 可确保在我部署时传输文件。

也许你的问题是类似的。

编辑

鉴于我的反对意见,我认为我应该扩展并说我的观点是,鉴于在第 1 行第 1 列有有效的 json,与返回的实际 json 文件相比,您收到 404 http 响应的可能性更大.

所以也许文件不在正确的位置,或者服务器没有权限或其他什么,但以上是我的问题。诚然,这可能过于具体到我的问题所在,而不是你的问题所在。

但一般的观点仍然存在,它更有可能是由于网络服务器返回一个 json 文件的 http 响应,请在浏览器中查看网络日志中的响应。

【讨论】:

  • 我正在使用 VS 2013,同样的问题。谢谢!
  • 遇到同样的问题是 404 错误,而不是语法错误
【解决方案3】:

内容类型

在 Network 选项卡中检查 manifest.json 的 Content-Type。这需要是 application/json 而不是 text/html

如果您的内容类型错误,您可能需要配置网络服务器的设置以正确提供 json 文件。

就我而言,我必须将其添加到 nginx sites-enabled 文件中:

位置~* .(jpg|jpeg|gif|png|css|js|ico|xml|svg|json)$

【讨论】:

【解决方案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"
  }
}

【讨论】:

    【解决方案5】:

    浏览器找不到清单,因为扩展名(MIME 类型)。在 Chrome DevTools > Network > Headers > Content-Type 中,清单的内容类型必须与实际清单文件扩展名(.json.webmanifest)匹配。解决404错误,需要在web.config中声明文件类型:

    <staticContent>
      <mimeMap fileExtension=".json" mimeType="application/json" />
      <mimeMap fileExtension=".webmanifest" mimeType="application/manifest+json" />
    </staticContent>
    

    【讨论】:

    • 抱歉这个愚蠢的问题,但我没有文件web.config 我应该在根目录中创建这个文件,然后像&lt;link rel="config" href="web.config"/&gt; 一样在index.html 中连接这个文件?
    【解决方案6】:

    我知道这是一个老问题,但万一上面接受的答案对某人不起作用,请务必检查manifest.json 的拼写和路径是否正确。我以前从一个简单的错字中得到了同样的错误。简单的错误,但它发生了!

    【讨论】:

      【解决方案7】:

      在我的特殊情况下,我在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"
            }
         }
      }
      

      但总的来说,当您收到此 Line 1 Col 1 Unexpected Token 误导性错误时,我的建议是:您的 JSON 的一个或多个部分有问题,可能有也可能没有使用此文件中的语法

      1. 将最常见、最简单的字符串内容移至manifest.json 文件的顶部,例如manifest_versionnamedescription 等。
      2. 将更复杂的数组放在底部,从您最怀疑可能是问题的那个开始。
      3. 将文件另存为 UTF-8。
      4. 然后,通过在线验证器运行它。
      5. 从那里,如果您仍然遇到问题,请使用另一个记事本并将 JSON 底部的项目剪切/粘贴到另一个文本文件中,然后尝试再次上传您的 JSON。 (请注意,您可能会收到以逗号结尾且没有后续项目的 JSON 块的错误。因此,当您收到错误时,请不要忘记撤消该操作。)
      6. 无论如何,重复第 4 步,直到 Line 1 Col 1 错误消失。到那时,您就知道需要处理的违规部分了。
      7. 将除该部分之外的所有其他内容粘贴回您的manifest.json。这就是我发现我的storage 块是问题的原因。我查看了另一个 Chrome 扩展程序,看看他们是如何做事的并意识到我的错误。

      【讨论】:

        【解决方案8】:

        当清单为空或根本没有清单时也会发生此错误。如果你使用一些框架,例如。 Angular,只需检查您的生产构建中是否有清单。如果没有 - 在你的 angular.json/angular-cli.json 中添加“manifest.json”到 assets 数组。

        示例: "assets": ["assets", "favicon.ico", "manifest.json"]

        【讨论】:

          【解决方案9】:

          这是旧的,但我遇到了同样的问题,发现我没有在我的脚本中使用标准双引号 ",我从 official Google Doc 复制并粘贴了该脚本

          【讨论】:

            【解决方案10】:

            请尝试将 manifest.json 文件保存为 UTF8 格式。

            【讨论】:

            • 这更像是一个评论。解释为什么这应该解决错误 utf-8 在大多数情况下被用作默认格式,除非更改。
            猜你喜欢
            • 2019-06-05
            • 1970-01-01
            • 1970-01-01
            • 2020-08-04
            • 1970-01-01
            • 1970-01-01
            • 2022-10-15
            • 2019-04-29
            • 2015-07-12
            相关资源
            最近更新 更多