【问题标题】:Uncaught (in promise) SyntaxError: Unexpected end of input in React when fetching the APIUncaught (in promise) SyntaxError: Unexpected end of input in React when fetch the API
【发布时间】:2019-11-21 07:16:39
【问题描述】:

当我尝试在 React 中使用 fetch(api) this 时遇到错误。

fetch(url, {mode: "no-cors"})
.then(response => console.log(response.json()))
.catch(error => console.log('Error:', error));

错误信息是:

Promise {: SyntaxError: Unexpected end of input 在http://localhost:3000/static/js/main.chunk.js:420:46} CalendarCommentary.js:22 Uncaught (in promise) SyntaxError: Unexpected 输入结束

我正在使用reactreact-router-dom。我看到其他答案是添加服务器端点的标头或其他东西。但我无法修改服务器。有没有其他方法可以解决这个问题?

【问题讨论】:

  • 错误在您的服务器返回的 JSON 中。使用浏览器网络选项卡检查 HTTP 响应;这可能很明显。
  • 如果 API(url)在不同的域中,它可能不允许你的页面直接向它发出请求。在这种情况下,您所能做的就是在您自己的域中为 API 创建自己的代理。
  • 在浏览器开发工具网络中检查实际请求本身并查看响应正文中返回的内容

标签: javascript node.js reactjs


【解决方案1】:

你说:

{mode: "no-cors"}

这意味着“不执行任何需要 CORS 的操作。不要报告与 CORS 相关的错误”。

如果您使用它进行跨域请求,则响应将为空白。未经 CORS 许可,您无法阅读实际响应。

由于您得到的响应是空白的,因此您在找到任何有效 JSON 之前就到达了它的结尾(即 .json() 期望找到 JSON 并且在找到任何有效 JSON 之前意外地到达了输入的结尾)。

用途:

{mode: "cors"}

但我无法修改服务器。

如果服务器未通过 CORS 授予权限,并且您无法更改该权限,则从其他地方获取数据(例如,您控制的源上的代理脚本)。

【讨论】:

    猜你喜欢
    • 2018-02-19
    • 2021-11-06
    • 1970-01-01
    • 2019-08-31
    • 1970-01-01
    • 1970-01-01
    • 2019-09-19
    • 1970-01-01
    • 2021-08-23
    相关资源
    最近更新 更多