【问题标题】:No expected error with axios and express routeraxios 和 express 路由器没有预期的错误
【发布时间】:2020-05-10 03:18:48
【问题描述】:

我正在使用说明从我的 API 发出对第三方 API 的请求。但是,我收到一份空文件作为退货。


module.exports = app => {

    const servicesToll = (req, res) => {

        var obj

        try {
            console.log("'/test' call");
            axios.post('MyUrl')
                .then(res => {
                    obj = res.data

                    console.log(obj)
                    res.status(200).json(res.data)
                })
                .catch(err => res.send(err));

        } catch (err) {
            console.error("GG", err);
            console.log("I get error")
        }
    }
    console.log("I pass")
    return { servicesToll }
}

这样,我没有让控制台返回消息:“我通过”,也没有预期的对象。

值得一提的是,console.log (obj) 准确地返回了我期望收到的内容。

app.route('/api')
        .get(app.api.modulos.servicesToll)

控制台打印:

'/test'调用

{ access_token: 'YFns9SsMILak0aE9dRbqX0aw5UlFq9', expires_in: 86400, token_type: '承载者', 范围: '', refresh_token: 'yTAY78b08Cz15brNK925IheNf7phwX' }

【问题讨论】:

  • FWIW 你的“我通过”控制台消息是误报,只要axios 发送控制台日志消息就会被写入,这条线将始终运行,即使失败。

标签: javascript node.js express axios


【解决方案1】:

解决方法是:

.then(response => {
                    // obj = res.data

                    console.log(response.data)
                    res.status(200).json(response.data)
                })

【讨论】:

  • 我看不出这与您问题中的代码有何不同?
  • 这是完全相同的代码。您刚刚更改了响应变量名称。
  • 是的,但是,它有效。显然,我使用了 2 个嵌套请求。因此,对变量使用相同的名称时,就会出现注册不足的情况。如果我犯了错误,我深表歉意。
猜你喜欢
  • 2021-10-14
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-01-24
  • 2016-09-29
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多