【问题标题】:Axios - Getting socket hang up error while running it on docker containerAxios - 在 docker 容器上运行时出现套接字挂起错误
【发布时间】:2021-04-27 14:58:14
【问题描述】:

我正在尝试使用 Axios npm 从第三方 API 获取结果。使用嵌套请求,第一个请求是获取令牌,另一个是获取结果。

下面的代码在我的本地机器上运行良好,但在 Docker 容器中却不行。

    var config = {
        method: 'post',
        url: gsecConfig.tokenUrl,
        headers: {
            'Content-Type': 'application/x-www-form-urlencoded'
        },
        data: data
    };

    axios(config)
        .then(function (response) {
            if (response.data.access_token) {
                const config = {
                    headers: { Accept: 'application/json', Authorization: `Bearer ${response.data.access_token}` }
                };

                axios.get(gsecConfig.gsecUrl + gsecid, config)
                    .then(function (response) {
                        let supplierData = response.data;
                        res.status(200).json({
                            "data": supplierData
                        });
                    }).catch(function (error) {
                        res.json({
                    "errors": error.message,
                    "name": error.name
                });
                    });
            }
        })
        .catch(function (tokenError) {
            if (tokenError) {
                res.json({
                    "errors": tokenError.message,
                    "name": tokenError.name
                });
            }
        });
});

出现如下错误

"message": "socket hang up",
"name": "Error",
"stack": "Error: socket hang up\n    at createHangUpError (_http_client.js:323:15)\n    at Socket.socketOnEnd (_http_client.js:426:23)\n    at Socket.emit (events.js:203:15)\n    at endReadableNT (_stream_readable.js:1129:12)\n    at process._tickCallback (internal/process/next_tick.js:63:19)",
"code": "ECONNRESET"

提前致谢!

【问题讨论】:

    标签: node.js docker express axios containers


    【解决方案1】:

    如果你的服务器不是Kubernetes,你可以将发布方式改为host(默认为ingress),问题就解决了。 check this 您可以在 docker-stack 中更改它,如下所示:

    ports:
          - target: 3001
            published: 3001
            protocol: tcp
            mode: host
    

    但是如果这是带有节点集群的 Kubernetes,你应该使用入口模式,我正面临这个问题,仍然卡在这里。希望有人能帮忙。

    【讨论】:

      猜你喜欢
      • 2023-03-28
      • 1970-01-01
      • 2019-12-04
      • 2021-01-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多