Javascript 未捕获(承诺中)SyntaxError:获取API时React中的输入意外结束
在React中尝试使用fetch(api)时遇到错误Javascript 未捕获(承诺中)SyntaxError:获取API时React中的输入意外结束,javascript,node.js,reactjs,Javascript,Node.js,Reactjs,在React中尝试使用fetch(api)时遇到错误 fetch(url, {mode: "no-cors"}) .then(response => console.log(response.json())) .catch(error => console.log('Error:', error)); 错误消息是: 承诺{:语法错误:输入意外结束 at}calendarCommentation.js:22未捕获(承诺中)语法错误:意外 输入结束 我正在使用react和react路由
fetch(url, {mode: "no-cors"})
.then(response => console.log(response.json()))
.catch(error => console.log('Error:', error));
错误消息是:
承诺{:语法错误:输入意外结束
at}calendarCommentation.js:22未捕获(承诺中)语法错误:意外
输入结束
我正在使用react
和react路由器dom
。我看到另一个答案是添加一个服务端点的头或其他东西。但是我不能修改服务器。还有别的办法解决这个问题吗?你说:
这意味着“不做任何需要CORS的事情。不报告CORS相关错误”
如果您使用此命令发出跨来源请求,则响应将为空。未经CORS许可,您无法读取实际响应
因为您得到的响应是空的,所以在找到任何有效的JSON之前,您就到达了响应的末尾(即,.JSON()
期望找到JSON,并且意外地在找到任何JSON之前到达输入的末尾)
使用:
但是我不能修改服务器
如果服务器未通过CORS授予权限,而您无法更改,则从其他地方获取数据(例如,您控制的源上的代理脚本)。错误出现在服务器返回的JSON中。使用浏览器网络选项卡检查HTTP响应;这可能是显而易见的。如果API(url)位于不同的域中,它可能不允许您的页面直接向其发出请求。在这种情况下,您所能做的就是在自己的域中为API创建自己的代理。在浏览器开发工具网络中检查实际请求本身,并查看响应体中返回的内容
{mode: "no-cors"}
{mode: "cors"}