【问题标题】:How do I catch a server code error using Axios如何使用 Axios 捕获服务器代码错误
【发布时间】:2019-06-26 18:47:07
【问题描述】:

我已向 API 发出 GET 请求,该 API 以 400 错误(和“无效请求”)响应拒绝 GET 请求;虽然我可以捕获和处理响应数据,但还有另一个我无法捕获的错误行:

GET https://API 地址/test 400

我的代码如下:

try {
    let res = await this.axios.get(API)
    console.log(res.data)
} catch (error) {
    console.log(error.response.data)
}

我确实也尝试过将其作为一个承诺链(带有一个 catch) - 但结果相同,我认为将所有内容包装在一个 try catch 中就可以了。

我的 API 代码(托管在 Firebase 上)如下:

exports.test = functions.https.onRequest((request, response) => {
    cors(request, response, () => {
        if (request.method !== 'POST') {
            return response.status(400).send('Invalid request.')
        }
        response.status(200).send("Hello from Firebase!");
    })
});

第一行是当我发送 POST 请求时,其余的在 GET 请求之后返回:

如何处理 GET 错误?它来自哪里?

【问题讨论】:

  • 你好,我刚刚测试了这个东西,尝试 catch 对我很有用。你错过了哪一行?
  • 嗯,很有趣。黑线只是 API 地址。不确定您指的是哪一行?
  • 您能否详细说明如何将带有helloWorld 的URL 链接到名为test 的云函数? HTTPS云函数可以通过us-central1-<project-id>.cloudfunctions.net/test调用
  • 抱歉,我有两个版本。编辑第一行以消除这种差异。如果我发送一个 POST 请求,这确实可以正常工作,所以这是关于错误的。

标签: javascript firebase vue.js google-cloud-functions axios


【解决方案1】:

如果我正确理解您的问题,您似乎使用错误的 URL 调用云函数。

你使用

 https://us-central1-xxxxxx.cloudfunctions.net/helloWorld

如您的问题的第一个版本所示,

什么时候应该使用

 https://us-central1-xxxxxx.cloudfunctions.net/test

因为您的云函数是用

定义的
exports.test = functions.https.onRequest()

您可以在此处找到相应的文档:https://firebase.google.com/docs/functions/http-events#invoke_an_http_function


根据您的评论更新:

GET显示错误是正常的,因为您有以下代码:

 if (request.method !== 'POST') {
   return response.status(400).send('Invalid request.')
 }

由于 GET 不是 POST,如果出现 400 错误,请输入此内容...

【讨论】:

  • 谢谢,正如我上面所说,这是我的帖子中的错误,而不是我的代码。 POST 工作正常,GET 继续显示此错误。
  • GET 显示错误是正常的,因为您有以下代码:if (request.method !== 'POST') { return response.status(400).send('Invalid request.') }。由于 GET 不是 POST,因此如果出现 400 错误,请输入此内容...
  • 谢谢。所以这必须是一个浏览器功能来记录传出并在代码为 400+ 时抛出自己的错误?我之前在 Edge 上尝试过,结果是一样的,但我刚刚尝试过 Firefox,它只是显示“无效请求”,正如我所预料的那样。
  • 是的,浏览器可能会以不同的方式报告错误。您应该使用开发人员选项并查看网络选项卡以获取完整报告。见developer.mozilla.org/en-US/docs/Tools/Network_Monitor/…。
  • 感谢您接受我的回答。如果您认为它有帮助,您还可以通过单击灰色向上箭头来支持它。见stackoverflow.com/help/someone-answers。谢谢!
猜你喜欢
  • 2018-03-25
  • 1970-01-01
  • 2013-03-15
  • 2019-10-07
  • 2013-07-04
  • 1970-01-01
  • 2018-09-25
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多