我有一个提取请求:
fetch(url, {
}.then(function(resp))
// do something
}.catch(err => {
console.log(err);
}
我的问题涉及获取err
的整个堆栈跟踪。例如,这是真正的错误消息:
Access to fetch at 'https://www.google.com/' from origin 'http://localhost:3000' has been blocked by CORS policy: No 'Access-Control-Allow-Origin' header is present on the requested resource. If an opaque response serves your needs, set the request's mode to 'no-cors' to fetch the resource with CORS disabled.
太好了。这是一条有用的消息。但是,console.log(err)
打印出TypeError: Failed to fetch
。那是一条非常无用的错误消息。有没有办法捕获在控制台中记录的整个消息(即var message = //the full error
?err.stack
似乎不是一个函数,并且err.message
返回相同的无用的{{1} }消息
答案 0 :(得分:0)
通常,在使用fetch
时,您想使用response.ok
属性,这一开始有点令人困惑。 This是一篇非常不错的文章,其中包含此示例,它或多或少是您想要执行的操作:
fetch("http://httpstat.us/500")
.then(function(response) {
if (!response.ok) {
throw Error(response.statusText);
}
return response;
}).then(function(response) {
console.log("ok");
}).catch(function(error) {
console.log(error);
});
也就是说,如果您遇到CORS错误,因为它们没有给您一个不错的错误代码(例如404),您仍然会收到TypeError: Failed to fetch
,他们只是取消了HTTP请求