【问题标题】:Why do I get ECONNRESET in the terminal, but not the browser?为什么我在终端中得到 ECONNRESET,但在浏览器中没有?
【发布时间】:2021-02-22 01:26:10
【问题描述】:

我有一个非常简单的 nodejs 程序,用于演示与 Alchemer API 的通信。每当我运行以下代码时,都会有几秒钟的延迟,然后会抛出标识符为ECONNRESET 的错误。但是,当我将相同的 url 复制到浏览器或 Postman 中时,它工作得很好。

Nodejs 代码段

require('dotenv').config();
const https = require('https');
const querystring = require('querystring');

const params = {
    api_token: process.env.API_TOKEN,
    api_token_secret: process.env.API_TOKEN_SECRET
};

const reqArgs = querystring.stringify(params);

console.log('Query string: ', reqArgs);

const reqOptions  = {
    host: 'api.alchemer.com',
    path: '/v5/survey?' + reqArgs
}

console.log('Query: ', reqOptions.host + reqOptions.path);
console.log('Getting data...');
    
const req = https.request(reqOptions, resp => {
    let data = '';

    resp.on('data', chunk => {
        data += chunk;
    });

    resp.on('error', err => {
        console.error('Error on response:');
        console.error(err);
    });

    resp.on('end', () => {
        console.log('Request complete:');
        console.log(data);
    });
});

req.on('error', (err) => {
    console.error('Error on request:');
    console.error(err);
})

观察到错误

Error: socket hang up
    at connResetException (internal/errors.js:607:14)
    at TLSSocket.socketOnEnd (_http_client.js:493:23)
    at TLSSocket.emit (events.js:327:22)
    at endReadableNT (internal/streams/readable.js:1327:12)
    at processTicksAndRejections (internal/process/task_queues.js:80:21) {
  code: 'ECONNRESET'
}

【问题讨论】:

    标签: node.js api https query-string econnreset


    【解决方案1】:

    因为你不打电话给req.end()!所以它永远不会向后端发送请求。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2021-07-20
      • 1970-01-01
      • 2019-07-05
      • 2021-03-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多