Nodejs axios.get 发送 HTTPS get 请求时出错

Nodejs axios.get error when sending HTTPS get request

我正在使用 Axios 版本 0.21.1
我正在发送 HTTPS get 请求,如下所示。

当我 运行 下面的代码时,try 块中的 #2 行 console.log... 抛出错误。
但是我在 catch 中得到的错误对象是空的。不确定为什么日志会抛出错误。

try {
    let getRes = await axios.get(myUrl, {headers: {'Authorization': `Bearer ${token}`}});
    console.log("getRes: " + JSON.stringify(getRes));
} catch (error) {
    console.log("Error: " + JSON.stringify(error));
}

如果我 运行 以下版本的 #2 参数为 {}null for axios.get.
我在 catch 中打印了错误,但我不确定它失败的原因。

try {
    let getRes = await axios.get(myUrl, {}, {headers: {'Authorization': `Bearer ${token}`}});
    console.log("getRes: " + JSON.stringify(getRes));
} catch (error) {
    console.log("Error: " + JSON.stringify(error));
}

我得到的错误是 401 Unauthorized
来自 Postman,这个 URL 使用与我在代码中使用的相同的 Bearer 标记工作正常。

我什至尝试了下面的代码,其行为与#1 案例相同:

let getrRes = await axios({
    method: 'get',
    url: myUrl,
    headers: {
        "Authorization": "Bearer "+token
    }
});

我不希望有此获取请求的请求正文。
可能是什么问题以及如何正确调用 axios.get

您的第一个程序是正确的!但是里面是你的 console.log() 不好:你不能在 axios 返回的 getRes 对象上使用 JSON.stringify() 方法,这就是你的程序进入陷阱的原因.

要显示响应,要么不使用JSON.stringify(),要么对axios返回的数据(即getRes.data)使用JSON.stringify()

try {
    let getRes = await axios.get(myUrl, {headers: {'Authorization': `Bearer ${token}`}});
    console.log("getRes: " + JSON.stringify(getRes.data));
    // OR
    console.log("getRes: " + getRes);
} catch (error) {
    console.log("Error: " + error);
}

请注意,您也不能在 catch 中遇到的错误上使用 JSON.stringify()!这就是为什么你只有一个空对象。

如果您想确定错误的确切原因,请更改 try catch 块中的 console.log。不要尝试 JSON.strigify 错误,而只是将其转储到控制台上。这将确保将错误 [​​=18=]as-is 转储到控制台。

try {
  let getRes = await axios.get(myUrl, {headers: {'Authorization': `Bearer ${token}`}});
  console.log("getRes: " + JSON.stringify(getRes));
} catch (error) {
  console.log(error);
}

如果您仍然希望获得细粒度的错误消息,您可以在 catch 子句中使用以下语句之一将错误转换为字符串:


console.log(error.message);
console.log(error.toString());