manifest.json出现意外标记

8

你好,我将一个React/Express项目上传到Heroku(https://polar-oasis-57801.herokuapp.com/),但在控制台中收到以下错误信息: Chrome控制台错误信息

我尝试查找此错误,似乎需要更改manifest.json文件中的某些内容,但我不确定。任何建议都将有所帮助。这是我的清单文件:

{
  "short_name": "React App",
  "name": "Create React App Sample",
  "icons": [
    {
      "src": "favicon.ico",
      "sizes": "64x64 32x32 24x24 16x16",
      "type": "image/x-icon"
    }
  ],
  "start_url": ".",
  "display": "standalone",
  "theme_color": "#000000",
  "background_color": "#ffffff"
}

还有我的Github项目:https://github.com/bernar83/cat-cards


2
通常这样的错误意味着解析的JSON不是有效的JSON。快速检查您链接的文件似乎表明它是有效的JSON。在部署过程中,manifest.json是否可能被某种方式更改了? - Mathyn
1
"Unexpected token <" 通常意味着您正在尝试解析 HTML 而不是 JSON。查看服务器返回的数据 https://polar-oasis-57801.herokuapp.com/cat-cards/manifest.json,您会发现正是这种情况。服务器返回的是一个 HTML 文档,而不是您的 JSON 文件。(对于您的 .js.css 文件也是同样的情况。) - Jordan Running
我刚刚遇到了同样的错误,经过几个小时的努力,我将manifest.json中的start_url更改为"start_url": "./index.html"后成功解决了问题。 - ProblemsEverywhere
7个回答

13
这个错误意味着请求 manifest.json 没有返回有效的JSON响应。很可能它返回了一个HTML,因为它由于以 < 开头而失败。
确保正确链接 manifest.json 并在部署过程中保持其完整性。尝试导航到 http://yoururl/manifest.json 并检查结果。
编辑1:看起来你对清单的链接已经失效了。在 https://github.com/bernar83/cat-cards/blob/master/client/public/index.html 中,尝试替换
<link rel="manifest" href="%PUBLIC_URL%/manifest.json" />

<link rel="manifest" href="manifest.json" />

编辑2:刚刚检查了您的Heroku链接并确认了错误。您的页面尝试在路径/cat-cards/manifest.json下查找manifest.json,这是不正确的。它应该只是manifest.json


1
我将链接更改为manifest.json,这样就删除了有关清单文件的错误消息,但是现在查看我的最近部署到Heroku网站的控制台,我仍然会得到此图片中的前两个错误:https://i.stack.imgur.com/ZyMuL.png。有什么想法可以消除未捕获的语法错误吗? - Adrian Bernardo
1
你需要修复你的JavaScript文件链接。 - gbalduzzi
1
我不确定我是否在正确的地方寻找,但您能否澄清一下我可以在哪里找到那些JavaScript链接?我假设它们在client/build/index.html文件中,就像清单链接一样,但我没有在其中找到JavaScript链接。 - Adrian Bernardo
实际上,从 package.json 中删除 homepage 可以解决这个问题。 - Roshdy

1
我遇到了同样的问题,我通过以下方法解决:
  1. 进入你的React应用程序中的package.json文件。

  2. 你会看到顶部的homepage属性,删除它或复制该URL。

  • 如果你删除它,然后再创建构建并在你的express.static('./build')中使用该构建。

  • 如果你复制它,则在你的express服务器文件中使用app.use("that copied url", express.static('./build'))中的url。


0

2
欢迎来到 Stack Overflow!虽然这个链接可能会回答问题,但最好在这里包含一些上下文和答案的关键部分,然后再提供参考链接。当链接页面更改或离线时,仅链接的答案将变得无效。有关更多信息,请参见 如何编写一个好的答案? - Mark Ormesher

0

我曾经遇到过类似的问题。由于我遇到这个问题时正在尝试解决它,所以我将它添加在这里。我在我的“JS不允许”文件中包含了一些生成的favicon标记。我的manifest.json文件位于src/目录中,因此粘贴的标记引用的是不在我公共根目录中的清单。然后,样板代码返回了“JS不允许在此处”的EJS HTML作为manifest.json的实际返回值,因此浏览器将其视为格式不正确的JSON... 这不理想。

因此,如果您的路由器会针对错误的HTTP请求返回此类内容(例如Ant Design Pro),那么这可能是您遇到的问题。


0
今天遇到了这个问题。我的团队遇到的问题是,在 server.js 文件中,app.use(routes) 行在静态资源 app.use(express.static("client/build")) 之上。
将其移至下方,使得网站能够适当地部署到 Heroku 上。

0

请检查build文件夹和public文件夹中的index.html文件。我曾经遇到过同样的问题,后来发现问题出在Html上,没有其他问题。

谢谢 Binod Singh


0

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接