Javascript 获得;TypeError:无法获取“文件”;当请求尚未发出时';他没有真正失败
我正在我的React应用程序中使用。该应用程序部署在服务器上,运行良好。我测试了很多次。但是,突然应用程序停止工作,我不知道为什么。问题是,当我发送一个Javascript 获得;TypeError:无法获取“文件”;当请求尚未发出时';他没有真正失败,javascript,get,fetch-api,Javascript,Get,Fetch Api,我正在我的React应用程序中使用。该应用程序部署在服务器上,运行良好。我测试了很多次。但是,突然应用程序停止工作,我不知道为什么。问题是,当我发送一个get请求时,我从服务器接收到一个有效的响应,但是fetch API捕获了一个异常并显示TypeError:failed to fetch。我甚至没有对代码做任何更改,这是所有React组件的问题 我得到了一个有效的答复: 但同时也会出现此错误: 当我删除凭据“include”时,它可以在本地主机上工作,但不能在服务器上工作 我尝试了Stac
get
请求时,我从服务器接收到一个有效的响应,但是fetch API捕获了一个异常并显示TypeError:failed to fetch
。我甚至没有对代码做任何更改,这是所有React组件的问题
我得到了一个有效的答复:
但同时也会出现此错误:
当我删除凭据“include”时,它可以在本地主机上工作,但不能在服务器上工作
我尝试了StackOverflow和GitHub上给出的所有解决方案,但都不适合我。请注意,代码中有一个不相关的问题,但以后可能会困扰您:您应该
返回res.json()
,否则在json解析或您自己的函数处理数据时不会出现任何错误
回到您的错误:您不能有TypeError:failed to fetch
,请求成功。您可能有另一个请求(检查“网络”面板以查看所有请求)中断并导致记录此错误。此外,也可以检查“保留日志”,以确保面板不会被任何不雅的重定向清除。有时,我碰巧有一个持久的“控制台”面板,以及一个清除的“网络”面板,这导致我在控制台中出现错误,而这实际上与可见的请求无关。你应该检查一下
或者您(但这将是恶意的)在您的最终
.catch
;)中实际有一个硬编码的console.log('TypeError:failed to fetch')
)实际上,您的.then()
中存在错误,但这很难让人相信。问题可能在于您从后端收到的响应。如果它在服务器上工作正常,那么问题可能是响应头。
检查响应标题中的访问控制允许原点(ACAO)。通常react的fetch API会在收到响应后抛出fail to fetch,即使响应头的ACAO和请求的来源不匹配。我也有类似的问题,因为我是新手,这里有一些事实供大家评论: 我以这种方式将表单数据发送到Google sheet(scriptURL是…,showSuccess()显示的是一个简单的图像): 在Edge my HTML中执行时不显示错误,网络选项卡报告这3个请求: 在Chrome my HTML(index.htm)中执行显示无法获取错误,网络选项卡报告这2个请求: 第二列中的值被阻止:其他,控制台选项卡中也有错误: 得到。。。 net::错误\u被\u客户端阻止\u 为了挂起已安装的Chrome扩展,我在一个匿名窗口中执行了我的代码,没有错误消息,网络选项卡报告这2个请求:
我猜是有什么东西(扩展?)阻止了Chrome阅读请求的答案(GET请求被阻止)。我知道这是一篇比较老的帖子,但我想分享一下对我有用的东西:
我只是在url中的“localhost”之前输入了“http://”。希望它能帮助一些人。如果您在本地主机服务器上调用fetch,请使用非SSL,除非您拥有本地主机的有效证书。获取无效或自签名的证书将失败,尤其是在本地主机上。我知道这个问题可能有特定的原因,但它首先出现在“Typeerror:Failed to fetch”的搜索结果中,我想在这里列出所有可能的原因 Fetch规范列出了从Fetch API引发TypeError的次数: 以下是截至2021年1月的相关段落。这些是课文的摘录 4.6 HTTP网络获取 要使用带有可选凭据标志的请求执行HTTP网络获取,请运行以下步骤:
…
16并行运行这些步骤:
…
2.如果中止,则:
…
3.否则,如果流是可读的,则返回带有TypeError的错误流 要将名称/值名称/值对附加到Headers对象(Headers),请运行以下步骤:
…
5.打开对象:
…
可读流
如果keepalive为true,则抛出TypeError。
若对象被干扰或锁定,则抛出一个TypeError 在“Body mixin”一节中,如果您使用的是FormData,则有几种抛出TypeError的方法。我没有在这里列出它们,因为这会让这个答案很长。有关段落: 在“请求类”部分中,新的请求
fetch(url)
.then(res => res.json())
.then(data => {
// do something with data
})
.catch(rejected => {
console.log(rejected);
});
fetch(scriptURL, {method: 'POST', body: new FormData(form)})
.then(response => showSuccess())
.catch(error => alert('Error! ' + error.message))