提问人:Rob_Da_Joyce 提问时间:11/8/2023 更新时间:11/8/2023 访问量:37
无法获取vanilla javascript中的错误
Failed to Fetch error in vanilla javascript
问:
我们有一个网站,我已经开始实现 fetch API,而不是使用 jquery ajax,开始从 jquery 转向 vanilla。
我时不时地收到一个错误,其中 fetch API 抛出错误。我知道这一点,因为我已将其设置为在出现任何错误时向我发送电子邮件。但是,该错误不是很具有描述性。它只是说“无法获取”。这是什么意思?
请注意,此错误仅在某些时候发生。这个带有此 url 的函数每天被触发数百次,如果不是数千次,我可能每天收到一两次错误。
下面是 javascript:
async function fetchSimple(url, data = null, attempts = 0) {
try {
var response = await fetch(url, {
method: "POST",
body: data,
headers: { 'Content-type': 'application/json; charset=UTF-8' }
});
if (response.ok) {
var responseJSON = await response.json();
return responseJSON.d;
} else {
throw new Error(`Status: ${response.status}, StatusText ${response.statusText}`);
}
} catch (error) {
attempts++;
if (attempts == 1)
fetchSimple(url, data, attempts);
else {
alert(`Failed to ${url}\n\nError Message: ${error.message}\n\nAn email logging the error details has been sent to the development team`);
sendErrorLogEmail2(url, error.message, data);
}
}
}
这是我通过电子邮件收到的错误报告: 主题:无法执行 /Yazzoo/Product.aspx/BuildProductDesignPositionsSectionUI
error:无法提取
dataJSON: { “productId”:24999 }
浏览器:{“name”:“Chrome”,“version”:“118”,“screenType”:“mobile”}
答:
0赞
Loebstahhhh
11/8/2023
#1
提取请求返回“无法提取”的原因有很多。
有时提取失败的最可能原因是由于网络中断。这些事情发生了,你需要相应地处理它们。
其他原因可能包括:
- CORS 错误
- 错误的 URL
- 错误的协议
- 使用了错误的方法。
浏览器的开发人员工具应为您提供有关获取请求失败原因的更多信息。不幸的是,错误对象中并没有包含不太通用的错误消息。
如果您有兴趣,Fetch 标准列出了 TypeError 发生的所有可能原因(有很多可能的原因): https://fetch.spec.whatwg.org/#fetch-method
评论
0赞
Rob_Da_Joyce
11/8/2023
由于错误的间歇性,听起来像是网络中断。其他问题每次都会发生。如果他们能在错误消息中明确告诉我们,那就太好了
评论
if (attempts == 1) return fetchSimple(url, data, attempts);