捕获完整的提取错误

时间:2019-07-17 21:49:30

标签: javascript fetch

我有一个提取请求:

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 errorerr.stack似乎不是一个函数,并且err.message返回相同的无用的{{1} }消息

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请求