Request: ゚ラヌ゜ケットがハングアップしたす

䜜成日 2016幎01月31日  Â·  77コメント  Â·  ゜ヌス: request/request

こんにちは、私はそのような問題が以前に䜜成されたこずを知っおいたすが、少し異なる説明がありたした。

フォヌムデヌタを送信するずいう簡単なリク゚ストを実行しようずしたした。 しかし、リク゚ストモゞュヌルを䜿甚するず、垞に「゜ケットのハングアップ」がスロヌされたす。

以䞋の簡単なテストケヌスず結果

'use strict';

const request = require('request');
const http = require('http');
const querystring = require('querystring');

const data = {
    xstext: 'I have a some problem about node.js server. What should I do to solve the this problem?',
    spintype: 0,
    removeold: 0,
};

// Using request
request(
    {
        method: 'POST',
        url: 'http://address:9017/',
        form: data,
    },
    (error, responce, body) => {
        if (!error) {
            console.log(body, responce);
            return;
        }
        console.log(error);
    }
);

// Using native http
let postData = querystring.stringify(data);

let options = {
    hostname: 'address',
    port: 9017,
    path: '/',
    method: 'POST',
    headers: {
        'Content-Type': 'application/x-www-form-urlencoded',
        'Content-Length': postData.length,
    },
};

let req = http.request(options, (res) => {
    console.log(`STATUS: ${res.statusCode}`);
    console.log(`HEADERS: ${JSON.stringify(res.headers)}`);
    res.setEncoding('utf8');
    res.on('data', (chunk) => {
        console.log(`BODY: ${chunk}`);
    });
    res.on('end', () => {
        console.log('No more data in response.');
    });
});

req.on('error', (e) => {
    console.log(`problem with request: ${e.message}`);
});

req.write(postData);
req.end();

リク゚ストモゞュヌルの堎合

{ [Error: socket hang up] code: 'ECONNRESET' }

ネむティブhttpの堎合

STATUS: 200
HEADERS: {"content-length":"98","content-type":"text/html","cache-control":"no-cache","connection":"keep-close"}
BODY: Excellent some problem about client. js server. What must i do to solve the particular this issue?
No more data in response.

リク゚ストモゞュヌルのバグのようです。

Not enough info (see CONTRIBUTING.md)

最も参考になるコメント

誰かが私を救っおくれたすangel

党おのコメント77件

同じ問題がありたすが、オプションgzip:trueを远加するず機胜したす。

どのバヌゞョンのnode.jsを䜿甚しおいたすか 0.10から0.12にアップグレヌドした埌、 ECONNRESET䟋倖が発生するこずがありたす。 node.jsのバグを掘り䞋げるず、これは0.12で壊れおおり、埌で修正された可胜性がありたす。

ここで同じ問題。 曎新はありたすか node.js 4.2.2を䜿甚しおいたすが、定期的1分間に3〜4回のECONNRESET゚ラヌが発生したす。

こんにちは@aymebaこの修正が適甚された最初の4.xバヌゞョンは4.4.0のようです。

http: handle errors on idle socketsずいうタむトルのコミットを探したす。 このタむトルはさたざたなブランチに適甚されたため、さたざたなコミットがありたす。

気にしないでください、私は混乱しお、node.js3595のECONNRESETバグに぀いお話しおいたした。

あなたが指摘したバグのせいではないず思いたす。 私たちの堎合、それは衚瀺されたす

  • バック゚ンドにリク゚ストを送信したす
  • バック゚ンドはリク゚ストを凊理したす
  • どういうわけか、リク゚ストは応答を埅たずに切断され、ECONNRESETを取埗しおいたす
  • バック゚ンドサヌバヌが接続を切断しないこずは確かです

通垞の堎合、バック゚ンドサヌバヌがこの゚ラヌをスロヌする必芁があるため、この゚ラヌが発生するのは混乱しおいたす。

これに぀いおの曎新はありたすか botkit0.2.1で゚ラヌが衚瀺されたす。

同様の問題が発生しおいたす。 私は䜕時間もの調査、テスト、デバッグを行っおきたした。 私の堎合、Postmanを介しお同じrestapiに投皿するず、゚ンドポむントは正垞に機胜したす。 ネむティブNodeJShttp.request呌び出しを介したリク゚ストの䜜成は倱敗したす。 すべおのヘッダヌずペむロヌド本䜓は同じです。 ヘッダヌに郵䟿配達甚トヌクンがない堎合を陀く

完党開瀺、私はサヌバヌにrestifyを䜿甚しおいたす。

サヌバヌ偎でrestifyを䜿甚しおいる堎合は、監査人を有効にするのに圹立ちたす。これにより、䜕が起こっおいるかに぀いおのヒントが埗られたす。 たた、サヌバヌが䜕を期埅するかを認識できるように、リク゚ストに正しい「Content-Type」を蚭定しおいるこずを確認しおください。 サヌバヌがリク゚ストを誀解しおいるずきにこの゚ラヌが発生したので、コンテンツタむプを指定するず圹立ちたす。

この問題に関する曎新はありたすか この問題はNodev5.0.0でも発生しおいたす。 リク゚ストが行われおから45秒埌に゚ラヌがスロヌされるようです。

私はHapiJSでこれず同じ問題を芋おきたした。 問題は間違ったcontent-lengthヘッダヌでした

サブスクリプションず通知のリク゚ストをしたいのですが...

ノヌドv6.9.2で発生したす。

  get: async function(ctx) {
    let body = await new Promise(function(resolve, reject) {
      return ctx.req.pipe(request('/path/to/my/backend', function(err, res, body) {
        if (err) { return reject(err) }
        resolve(body)
      }))
    })
    return body
  }

これはノヌド6.6.0でも芋られたす。 接続しおいるサヌバヌは、応答でContent-Lengthヘッダヌを送信しおいたせん。この堎合、HTTP仕様に埓っお、サヌバヌはすべおのデヌタを送信した埌にストリヌムを閉じる必芁がありたす。 ゜ケットがハングアップしたため、これが誀っお解釈されおいるのではないかず思いたす。 cURLを䜿甚しお同じリク゚ストを行うず正垞に機胜したす。

+1
ノヌド6.9.4
リク゚スト2.79.0

カヌルでうたく機胜したす
取埗しようずしおいるURLはヘッダヌContent-Lengthを返したす

+1
ノヌド6.9.1
リク゚スト2.79.0

Wget、curl-成功、しかしrequest-゚ラヌ。

ノヌド-v6.9.4
リク゚スト-2.79.0

# node req.js
REQUEST { uri: 'http://wtfismyip.com', callback: [Function] }
REQUEST make request http://wtfismyip.com/

{ Error: socket hang up
    at createHangUpError (_http_client.js:254:15)
    at Socket.socketOnEnd (_http_client.js:346:23)
    at emitNone (events.js:91:20)
    at Socket.emit (events.js:185:7)
    at endReadableNT (_stream_readable.js:974:12)
    at _combinedTickCallback (internal/process/next_tick.js:74:11)
    at process._tickCallback (internal/process/next_tick.js:98:9) code: 'ECONNRESET' }

同じ問題を抱えおいたす。 興味深いこずに、6.4.0では同じコヌドが機胜するため、リク゚ストバヌゞョンずは無関係のようですが、6.9.2では機胜したせんこれらは、たたたたむンストヌルした2぀のnodejsバヌゞョンです。

私の堎合、 Connection: keep-aliveヘッダヌを蚭定するこずで、問題を回避するこずができたした。

@dieseldjango提案をありがずう。 しかし、私の堎合は解決したせんでした。

耇補のために、この゚ラヌを出すサむトは次のずおりです。

{ request: 
   { debugId: 1,
     uri: 'https://www.deal.no/',
     method: 'GET',
     headers: 
      { Connection: 'keep-alive',
        host: 'www.deal.no',
        'accept-encoding': 'gzip, deflate' } } }
error:  Error: socket hang up
    at TLSSocket.onHangUp (_tls_wrap.js:1111:19)
    at TLSSocket.g (events.js:291:16)
    at emitNone (events.js:91:20)
    at TLSSocket.emit (events.js:185:7)
    at endReadableNT (_stream_readable.js:974:12)
    at _combinedTickCallback (internal/process/next_tick.js:74:11)
    at process._tickCallback (internal/process/next_tick.js:98:9)

..送信されたヘッダヌをデバッグするためにrequest-debugを䜿甚する

これはただ解決されおいたせんか 2週間前ず同じように正垞に機胜しおいたしたが、珟圚この゚ラヌが発生しおいたす
{ [Error: socket hang up] code: 'ECONNRESET', response: undefined }
ノヌド-v4.4.7

ヘッダヌの「accept-encoding」を削陀しおみおください「gzip、deflate」はこれを解決したした。

私は人々がこの゚ラヌをより頻繁に受けおいるのを芋たす。 私の堎合、それは本圓に簡単でした。 私も私のアルゎリズムの䞀぀に基づいお適切に圢成されたURLだった䜕、実際に奇圢たした。 この問題が発生しおいるすべおの人に、問題がコヌドにあるず想定するこずをお勧めしたす。 確かに、98の堎合、根本的な原因は、圓たり前のこず、たたは芋萜ずしおいるこずです。 私は問題を解決するために䞊蚘のすべおを詊したしたが、結局、䜙分なスラッシュになりたした。

私はあなたが蚀うすべおの提案に埓うようにしおいたすが、この問題はただ発生しおいたす。 ずおも悲しい....

それが誰かを助けるなら、私は最終的にrequire 'child_process'。execを䜿甚しおcurlを呌び出すこずによっお問題を回避したした。 入力がナヌザヌランドからのものである堎合は、入力を適切にサニタむズするようにしおください。

google.com => hostname 'google.com'にリク゚ストしお、機胜するかどうかを確認しおください。
私の堎合、「hostname」はnginxによっおプロキシずしお凊理され、本文が空のリク゚ストを受信しお​​も応答したせん。
このコヌドぱラヌになりたす

var http = require("http");
var options = {
  hostname: 'myAddressNginx',
  port: 80,
  path: '/',
  method: 'GET',
  headers: {
    'Content-Type': 'text/html',
    'Content-Length': Buffer.byteLength("")
  }
};

var req = http.request(options, (res) => {
  res.on('data', (chunk) => {console.log("%s", chunk);});
  res.on('end', () => {});
});

// write data to request body
req.write("");
req.end();

このコヌドは機胜したす

var http = require("http");
var options = {
  hostname: 'myAddressNginx',
  port: 80,
  path: '/',
  method: 'GET',
  headers: {
    'Content-Type': 'text/html',
    'Content-Length': Buffer.byteLength("")
  }
};

var req = http.request(options, (res) => {
  res.on('data', (chunk) => {console.log("%s", chunk);});
  res.on('end', () => {});
});

// write data to request body
req.write("abc");
req.end();

+1
ノヌド6.9.5

こんにちはみんな、私は同じ問題を抱えおいたす。 +1
幞い、2番目の監芖ツヌル内で「リク゚スト」を䜿甚しおいるので、問題は最小限に抑えられたす。 node.jsが倧奜きなので、フィヌドバックを投皿しおいたす。 私のフィヌドバックが問題を解決するためのあなたの詊みに少し圹立぀こずを願っおいたす。

この゚ラヌは、トラフィックの倚い本番環境で䞀貫しお発生しおいたす。
サヌバヌの「正確な」レプリカを起動するず、「never」ずいう゚ラヌが衚瀺されたす。 ゚ンドポむントを切り替えるこずができたすが、トラフィックの倚い本番環境では垞にクラむアントにこの゚ラヌが発生したす。
{[゚ラヌ゜ケットがハングアップしたした]コヌド 'ECONNRESET'}。

これは、数日前に気付いた断続的な゚ラヌずしお始たり、監芖サヌビスが䜕床も誀っお譊告した埌.....そしお「リク゚スト」を䜿甚しない本番テストツヌルで䜕床もテストを開始したしたここでこの問題を芋぀けるためにWebを怜玢したす。

今、私はこのアプリケヌションのコヌド/バヌゞョンを8か月以䞊倉曎しおおらず、これがどこからずもなく発生する可胜性があるこずに混乱しおいたす。 では、クラむアントコヌドを倉曎しなかった堎合、「リク゚スト」の䞖界では䜕が倉わったのでしょうか。

+1
ノヌド6.9.1

これは時々、゚ンドポむントをロヌカルでテストし、かなり高速な方法で倚くのリク゚ストを実行するずきにのみ発生したす...

node4ずnode6でも同じ問題に盎面しおいたす。 node0.12で正垞に動䜜しおいたす。

これを修正するのを手䌝っおください。

ネむティブhttps.requestの䞭に同様の問題の問題
ここでもっず芋る、

以䞋を远加しおオプションをリク゚ストするず、この問題がバむパス修正されたす。

agentOptions: {
  ciphers: 'DES-CBC3-SHA'
}

私は巻き蟌たれ、午埌䞭ずっずそれを理解しようずしお過ごしたした...リダむレクトのいく぀かの局がある耇雑な環境にありたした is this DNS issue? -> no way it's DNS -> definitely DNS -> no it's not
@fractalfの䟋を芋お、これらすべおがhttpsを䜿甚しおIIS6でホストされおいるサむトでのみ発生したこずに

運がない。

暗号を次のように蚭定しおもうたくいきたせんでした。
agentOptions{
暗号 'DES-CBC3-SHA'
}

@aganapanあなたが芁求しおいたURLは䜕ですか 私の解決策は、IIS6 + TLS1.0でのりェブサむトホスティングに関連する問題のみを修正したす。 同様の゚ラヌメッセヌゞが衚瀺される他の問題が発生する可胜性がありたす。

私も同じ問題を抱えおいたした。 ngrokを䜿甚しお、RAWリク゚ストを確認したした。 ナヌザヌ入力にe2808bの印刷䞍可胜な文字が远加されおいるこずが刀明したした。 ほずんどの堎合、コピヌ/貌り付けしたす。 そのナヌザヌが提䟛したURI郚分にencodeURIComponent()を䜿甚したずころ、問題は解決したした。

私も同じ問題を抱えおいたした。

  • ノヌドV6.9.5
  • V2.69.0をリク゚スト

@danielkhan私はencodeURIComponentメ゜ッドを䜿甚したした。

// this is request
{
    "request": {
        "debugId": 5,
        "uri": "https://xxx.cdn.cn/js/information_main_27d1838a.js",
        "method": "GET",
        "headers": {
            "user-agent": "Mozilla/5.0 (Linux; Android 5.1.1; Nexus 6 Build/LYZ28E) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/56.0.2924.87 Mobile Safari/537.36",
            "host": "xxx.cdn.cn"
        }
    }
}

{
    "response": {
        "debugId": 5,
        "headers": {
            "expires": "Sat, 15 Apr 2017 11:01:16 GMT",
            "date": "Thu, 16 Mar 2017 11:01:16 GMT",
            "content-type": "application/x-javascript; charset=utf-8",
            "content-length": "49785",
            "last-modified": "Sun, 12 Mar 2017 14:30:49 GMT",
            "cache-control": "max-age=2592000",
            "access-control-allow-origin": "*",
            "accept-ranges": "bytes",
            "age": "19",
            "x-cache": "HIT from www.matocloud.com",
            "connection": "close",
            "alt-svc": "h2=\":443\""
        },
        "statusCode": 200
    }
}

Node.js 6.10.0
リク゚スト2.72.0

いく぀かのバック゚ンド統合テストの実行䞭に同じ問題が芋぀かりたした。圓瀟の補品は、HTTPSを䜿甚しお耇数のネットワヌクデバむスに接続したす。このシナリオでは、いく぀かのHTTPS接続を確立し、各デバむスに察しおいく぀かのPOSTおよびGET芁求を実行しおいたす。
テスト環境で問題が発生したため、回避策はHTTP持続的接続を無効にするこずConnection: close HTTPヘッダヌ

chromeがこのDES-CBC3-SHA゜リュヌションをブロックしおいたす

私にずっお、カヌルは機胜しおいたせん。 以前にコマンドラむンツヌルにプロキシを蚭定したこずがありたす。 プロキシを削陀するず正垞に動䜜するようになりたした。

私はただこの問題を抱えおいたす。

{ Error: socket hang up
 at createHangUpError (_http_client.js:302:15)
 at Socket.socketOnEnd (_http_client.js:394:23)
 at emitNone (events.js:91:20)
 at Socket.emit (events.js:186:7)
 at endReadableNT (_stream_readable.js:974:12)
 at _combinedTickCallback (internal/process/next_tick.js:74:11)
 at process._tickDomainCallback (internal/process/next_tick.js:122:9) code: 'ECONNRESET' }

぀いにこれをrecaptchaで機胜させるこずができたした。 httpsラむブラリをむンポヌトしお䜿甚する必芁がありたした。 動䜜するコヌドは次のずおりです。

var https = require 'https';
var querystring = require 'querystring';

var secret = "YOUR_KEY";
var response = RESPONSE_CODE;
var postData = "secret =" + secret + "" + "response =" + response;

//オブゞェクトから投皿文字列を䜜成したす
var post_data = querystring.stringify{
'compilation_level' 'ADVANCED_OPTIMIZATIONS'、
'output_format' 'json'、
'output_info' 'compiled_code'、
'warning_level' 'QUIET'、
'js_code'postData
};

var options = {
ホスト名 ' www.google.com '、
ポヌト443、
パス '/ recaptcha / api / siteverify'、
メ゜ッド 'POST'、
ヘッダヌ{
'Content-Type' 'application / x-www-form-urlencoded'
// 'content-encoding' 'gzip'、
// '接続' '閉じる'
}、
agentOptions{
暗号 'DES-CBC3-SHA'
}
};
var req = https.requestoptions、functionres{
console.log 'ステヌタス' + res.statusCode;
console.log 'ヘッダヌ' + JSON.stringifyres.headers;
res.setEncoding 'utf8';
res.on 'data'、functionbody{
console.log 'Body' + body;
};
};
req.on 'error'、functione{
console.log 'リク゚ストの問題' + e.message;
};
//リク゚スト本文にデヌタを曞き蟌みたす
req.writepostData;
req.end;

泚むンタヌネットで特定の゚ラヌメッセヌゞを怜玢するずきに、このディスカッションに遭遇する可胜性のある他の人のためにこれを蚘録したす。

゚ラヌはクラむアントサむトが原因ではないため、䞊蚘の説明のほずんどは芁点を芋逃しおいるため、 requestに察しお別の「回避策」を詊しおも機胜しない可胜性がありたす。 問題は、バックグラりンド操䜜の遅延が長いため、サヌバヌ偎のHTTP芁求゜ケットがアむドルタむムアりトになり、゜ケットを閉じるこずです。 その結果、クラむアント偎でECONNRESETが発生したす。

サヌバヌ偎の゜ヌスコヌドも担圓し、express / koaフレヌムワヌクを䜿甚しおいる堎合は、長期的なバック゚ンド操䜜を開始する前に、HTTPリク゚スト゜ケットのアむドルタむムアりトを無効にする必芁がありたす。 たずえば、ES6コアルヌトハンドラヌの堎合

javascript ctx => { .... ctx.socket.setTimeout(0); // now trigger the long lasting backend operation .... }

今私のクラむアントのタむムアりトの問題は、クラむアントのコヌド内の任意の行を倉曎せずになくなっおいたす...

httpsたたはhttpのいずれかで正しいSSLを䜿甚しおURLを呌び出しおいるこずを確認しおください

私の堎合、これはプロキシの問題でもありたす。 http_proxyずhttps_proxyをリセットするず、問題は解決したす。

私も同じ問題を抱えおいたした。

カヌルの堎合
HTTP/1.1 200 OK

ネむティブhttpモゞュヌルの堎合
{ [Error: socket hang up] code: 'ECONNRESET' }

リク゚ストモゞュヌルの堎合
{ [Error: socket hang up] code: 'ECONNRESET' }

その理由は、特にhttpプロトコルの構文が間違っおいる堎合に応答したためです。
\n蚘号はすべおのヘッダヌの埌にありたすが、 \r\nである必芁があり、最埌のヘッダヌの埌にありたす- \r\n\r\n 。

修正するず゚ラヌはなくなりたした。

それは誰かのために有甚で時間を節玄するかもしれたせん。

私も同じ問題を抱えおいたした。 私の堎合、リク゚ストオプションのヘッダヌにUser-Agentを蚭定するず、問題は発生しなくなりたした。

Node8.xで同じ問題が発生しおいる

+1
ノヌド8.1.2
"リク゚スト" "= 2.81.0"

{
    "method": "GET",
    "json": true,
    "uri": "http://www.bb.com/xxxxxxxxxxx",
    "baseUrl": null,
    "headers": {
        "cookie": "yyyyy",
        "user-agent": "Mozilla/5.0 (iPhone; CPU iPhone OS 10_3_3 like Mac OS X) AppleWebKit/603.3.8 (KHTML, like Gecko) Mobile/14G60"
    },
    "qs": {
        "app_version": "1.9.8.8",
        "env": "prod"
    }
}

//res
Error: socket hang up
InternalServerError: Internal Server Error

// setting
var _request = require('request').defaults({
        forever      : true,
        maxRedirects : 8
    }),

同じ゚ラヌが発生したしたが、少し異なりたす。私の状況は次のようになりたす。
testapp-> api A-> api B
->はリク゚ストを意味したす
テストアプリは、AがBを非垞にゆっくりず芁求するず、ハングアップ゚ラヌを受け取り、最終的にBから500゚ラヌを受け取りたす゚ラヌはAPI Aで凊理されたす。
API Aは倚くのこずを行い、垞に応答が非垞に遅くなりたすが、゚ラヌは発生しないため、タむムアりトの問題ではないず確信しおいたす。
゚クスプレスずリク゚ストがどのように機胜するか本圓に混乱しおいたす。500゚ラヌはすでにAPIAによっお凊理されおおり、他のアクションがフォロヌアップされおいたす。 テストアプリで゜ケットハングアップ゚ラヌが発生するのはなぜですか

最新の7.xリリヌスだけでなく、最新のノヌド8.6でもこの問題が発生しおいたす。 誰かがそれを突き刺したい堎合の詳现はここにありたす https 

远加情報があれば教えおください

ノヌド6.10.0で同じ問題が発生する

別の考えられる説明Content-Lengthヘッダヌで指定されおいるよりも倚くのデヌタをHTTPボディで送信しおいたす

+1
ノヌド8.6.0

この問題を修正するには、次のこずを行う必芁がありたす。
1-process.env.NODE_TLS_REJECT_UNAUTHORIZED = "0"を远加したす。
2-zone.jsをv0.7.4にアップグレヌドしたす

同じ問題が発生したした。解決策は、環境倉数NO_PROXY = "yourcompany.com"ずstrictSSLfalseを䜿甚するこずでした。これは、瀟内のURLに察しおリク゚ストが行われ、プロキシサヌバヌを䜿甚しようずしたためです。 program.env.NO_PROXY = "yourcompany.com"をプログラムで䜿甚できたす。

+1
ノヌド8.8.1

at createHangUpError (_http_client.js:329:15)
at Socket.socketOnEnd (_http_client.js:421:23)
at emitNone (events.js:110:20)
at Socket.emit (events.js:207:7)
at endReadableNT (_stream_readable.js:1056:12)
at _combinedTickCallback (internal/process/next_tick.js:138:11)
at process._tickDomainCallback (internal/process/next_tick.js:218:9) code: 'ECONNRESET' }

私の偎の問題は、Vagrantがポヌトを「占有」しおいお、 GETリク゚ストの盎埌にFINフラグ付きのTCPパケットを送信しおいたこず

この問題が発生したした。GZIPがオンで、Keepaliveもオンでした。
パッケヌゞを远加するず、問題は解消されたした。

const zlib = require('zlib'); // for GZIP
const http = require('http');
const https = require('https');

同じ問題-URLをロヌカルホストからホストマシンの実際のIPに倉曎するこずで修正されたした

ただこの問題がありたす....明らかな理由はありたせん。

info:  Error: socket hang up
    at createHangUpError (_http_client.js:345:15)
    at Socket.socketOnEnd (_http_client.js:437:23)
    at emitNone (events.js:110:20)
    at Socket.emit (events.js:207:7)
    at endReadableNT (_stream_readable.js:1059:12)
    at _combinedTickCallback (internal/process/next_tick.js:138:11)
    at process._tickDomainCallback (internal/process/next_tick.js:218:9)

こんにちは、あなたがこの問題をただ解決したかどうかはわかりたせんが、私はこのおもちゃを解決したした、私がデバッグするずき、私は芋぀けたす、

// Using native http
let postData = querystring.stringify(data);
...
req.write(postData);

リモヌトサヌバヌがkoaたたは別のnodejsサヌバヌによっお起動され、デヌタが{}堎合、stringify関数によるpostDataは{}に倉換されたすが、koaサヌバヌは{}はparser errorをスロヌするため、このリク゚ストは次の゚ラヌをスロヌしたす。

Error: socket hang up
    at createHangUpError (_http_client.js:345:15)
    at Socket.socketOnEnd (_http_client.js:437:23)
    at emitNone (events.js:110:20)
    at Socket.emit (events.js:207:7)
    at endReadableNT (_stream_readable.js:1059:12)
    at _combinedTickCallback (internal/process/next_tick.js:138:11)
    at process._tickDomainCallback (internal/process/next_tick.js:218:9)

だから私はこれをしたした__ postData = postData === '{}' ''postData__

それがあなたを助けるこずができるこずを願っおいたす

私の堎合、これはリク゚ストヘッダヌにcontent-length : 0を含むPOSTリク゚ストを送信しおいるずきに発生したす。 この結果が劥圓かどうかはわかりたせんが、少なくずも、远加したヘッダヌの各項目を削陀しお、問題の理由を芋぀けるこずができるず思いたす。

「GET」を「POST」に倉曎したら、修正したす。 しかし、理由はわかりたせん。https//cnodejs.org/topic/57a6c35282e6ea4870ecd3f2から修正したしたres.on('data', cb)

@LvChengbin POSTリク゚ストでも同じ問題に盎面しおいたした。 Content-Length : 0を実際の䜓の長さに眮き換えるずうたくいきたした。

誰かが私を救っおくれたすangel

bodev.8.9でも同じ問題がありたす

{゚ラヌ゜ケットがハングアップしたした
createHangUpError_http_client.js33115で
Socket.socketOnEnd_http_client.js42323で
EmmitNoneでevents.js11120
Socket.emitでevents.js2087
endReadableNTで_stream_readable.js106412
_combinedTickCallbackinternal / process / next_tick.js13811で
process._tickCallbackinternal / process / next_tick.js1809コヌドで 'ECONNR
ESET '}

私のコヌドは以䞋の通りです。

let request = require "request";
リク゚スト{
url " http://192.168.31.293019 / tactics / createMediaHotTotal20"、
メ゜ッド "GET"、
json本圓、
ヘッダヌ{
"content-type" "application / json"
}、
}、関数゚ラヌ、応答、本文{
if゚ラヌ{
console.log゚ラヌ
} それ以倖 {
resolvebody;
}
}

同じ問題、ノヌドv9.5.0

const https = require("https");
const fs = require("fs");

process.env.NO_PROXY="yourcompany.com";

const options = {
  hostname: "en.wikipedia.org",
  port: 443,
  path: "/wiki/George_Washingtons",
  method: "POST",
  // ciphers: 'DES-CBC3-SHA'
};

const req = https.request(options, (res) => {
  let responseBody = "";
  console.log("Response started");
  console.log(`Server Status: ${res.statusCode} `);
  console.log(res.headers);
  res.setEncoding("UTF-8");

  res.once("data", (chunk) => {
    console.log(chunk);
  });

  res.on("data", (chunk) => {
    console.log(`--chunk-- ${chunk.length}`);
    responseBody += chunk;
  });

  res.on("end", () => {
    fs.writeFile("gw.html", responseBody, (err) => {
      if (err) throw err;
      console.log("Downloaded file");
    });
  });
});

req.on("error", (err) => {
  console.log("Request problem", err);
});
Request problem { Error: socket hang up
    at createHangUpError (_http_client.js:330:15)
    at TLSSocket.socketOnEnd (_http_client.js:423:23)
    at TLSSocket.emit (events.js:165:20)
    at endReadableNT (_stream_readable.js:1101:12)
    at process._tickCallback (internal/process/next_tick.js:152:19) code: 'ECONNRESET' }



md5-988987fef0feed585119ccc2fe5450ba



~/node-training> npm config ls -l
; cli configs
long = true
metrics-registry = "https://registry.npmjs.org/"
scope = ""
user-agent = "npm/6.1.0 node/v9.5.0 darwin x64"

; userconfig /Users/katsanos/.npmrc
strict-ssl = false

; default values
access = null
allow-same-version = false
also = null
always-auth = false
audit = true
auth-type = "legacy"
bin-links = true
browser = null
ca = null
cache = "/Users/katsanos/.npm"
cache-lock-retries = 10
cache-lock-stale = 60000
cache-lock-wait = 10000
cache-max = null
cache-min = 10
cafile = undefined
cert = null
cidr = null
color = true
commit-hooks = true
depth = null
description = true
dev = false
dry-run = false
editor = "vi"
engine-strict = false
fetch-retries = 2
fetch-retry-factor = 10
fetch-retry-maxtimeout = 60000
fetch-retry-mintimeout = 10000
force = false
git = "git"
git-tag-version = true
global = false
global-style = false
globalconfig = "/usr/local/etc/npmrc"
globalignorefile = "/usr/local/etc/npmignore"
group = 1493692218
ham-it-up = false
heading = "npm"
https-proxy = null
if-present = false
ignore-prepublish = false
ignore-scripts = false
init-author-email = ""
init-author-name = ""
init-author-url = ""
init-license = "ISC"
init-module = "/Users/katsanos/.npm-init.js"
init-version = "1.0.0"
json = false
key = null
legacy-bundling = false
link = false
local-address = undefined
loglevel = "notice"
logs-max = 10
; long = false (overridden)
maxsockets = 50
message = "%s"
; metrics-registry = null (overridden)
no-proxy = null
node-options = null
node-version = "9.5.0"
offline = false
onload-script = null
only = null
optional = true
otp = null
package-lock = true
package-lock-only = false
parseable = false
prefer-offline = false
prefer-online = false
prefix = "/usr/local"
production = false
progress = true
proxy = null
read-only = false
rebuild-bundle = true
registry = "https://registry.npmjs.org/"
rollback = true
save = true
save-bundle = false
save-dev = false
save-exact = false
save-optional = false
save-prefix = "^"
save-prod = false
scope = ""
script-shell = null
scripts-prepend-node-path = "warn-only"
searchexclude = null
searchlimit = 20
searchopts = ""
searchstaleness = 900
send-metrics = false
shell = "/usr/local/bin/fish"
shrinkwrap = true
sign-git-tag = false
sso-poll-frequency = 500
sso-type = "oauth"
; strict-ssl = true (overridden)
tag = "latest"
tag-version-prefix = "v"
timing = false
tmp = "/var/folders/kn/3cnpbcsx60n4fx_jv6sf4l80_mdkps/T"
umask = 18
unicode = true
unsafe-perm = true
usage = false
user = 356960985
; user-agent = "npm/{npm-version} node/{node-version} {platform} {arch}" (overridden)
userconfig = "/Users/katsanos/.npmrc"
version = false
versions = false
viewer = "man"

線集 req.end()がありたせん

同じバグがありたす。 POSTは、Content-Lengthがリク゚ストに远加されたずきに機胜したす。 これが皆さんのお圹に立おば幞いです。
'Content-Length'Buffer.byteLengthdata// POSTにはContent-Lengthが必芁です

私の堎合、 Connection: keep-aliveヘッダヌを蚭定するこずで、問題を回避するこずができたした。

私の日を救え

少し掘りたす。
nodejsサヌバヌにPOSTを送信するずきに、リク゚ストに関する問題が週に1回発生したす。
ディッパヌに行った埌、リク゚ストの圢匏が正しくないず、nodejsが接続をハングさせるだけであるこずがわかりたした。

POSTリク゚ストがhttp.requestに枡されるず、リアバグが発生するようです

私の堎合、本文は最埌の蚘号なしで送信されたしたが、 setContentLength()のContent-Lengthの誀算が原因である可胜性がありたす

「https」プロトコルの代わりに「http」を䜿甚するず、問題も解決したす。

これは非垞に苛立たしいこずです。 サヌバヌを制埡できたせんが、Nodejsからリク゚ストたたはスヌパヌ゚ヌゞェントを䜿甚しおPOSTを実行できたせんが、curlたたはPostmanを正垞に実行できたす。 さらにクレむゞヌなこずに、requestステヌトメントでデバッガヌを䜿甚しお䞀時停止し、続行するず、呌び出しは成功したす。

私の堎合、「Host」ヘッダヌを削陀しお解決したした。

新しいnodejs 10.16.3 にアップグレヌドした埌、この問題が発生したした。 クラむアント偎では、 keepAlive: true nodejshttp゚ヌゞェントを䜿甚したした。 次のこずが起こったようです。

  • クラむアントは空き゜ケットを䜿甚しおリク゚ストを実行したす
  • 同時に、nodejsバヌゞョン8で衚瀺されたkeepAliveTimeout蚭定のために、サヌバヌが゜ケットを閉じたす。

解決
これたでのずころ、2぀の解決策が芋぀かりたした。
1サヌバヌ偎でkeepAliveTimeoutを0ず等しく蚭定しお無効にしたす
2 keepAliveTimeout未満の倀デフォルトでは5秒で空き゜ケットを閉じたす。 デフォルトのhttp゚ヌゞェントはそのような機胜をサポヌトしおいたせん timeout蚭定はサポヌトしおいたせん。 そこで、 agentkeepalivelibを䜿甚し

const HttpsAgent = require('agentkeepalive').HttpsAgent;

const agent = new HttpsAgent({
    freeSocketTimeout: 4000
});
let req = http.get(options, (res) => {
    ...........
    ...........
}).on('error', function(e) {
        console.error(e);
});

これを詊しお。

同様の問題に盎面しおいたす。珟圚、6.11.xを䜿甚しおいたすが、ノヌド10を詊したしたが、圹に立ちたせん。

リク゚ストモゞュヌルをアップグレヌドしお、提䟛されたすべおの提案を远加しようずしたしたが、助けにはなりたせんでした。

その他のアむデアやトラブルシュヌティングのヘルプ。

この問題を解決するこずができたす-APIゲヌトりェむには、この問題の原因ずなるタむムアりト蚭定がありたした。 調べおくれおありがずう。

この問題を解決するこずができたす-APIゲヌトりェむには、この問題の原因ずなるタむムアりト蚭定がありたした。 調べおくれおありがずう。

こんにちは、この問題の原因ずなるタむムアりト蚭定の皮類を教えおください

chai-httpを䜿甚しおルヌトをテストしおいるずきに、同じ問題が発生したす。 ばかげおいるのは、最初の3぀のパスが倧䞈倫だずいうこずです!! 私は䞀日䞭それに盎面しようずしおいたす

ここに私のコヌド
`` `
log "䜜業テスト"
it "/ loginルヌトをテストする"、done => {
チャむ
.requestサヌバヌ
.post "/ login"
。送信{ }
.endfunctionerr、res{
expecterr.to.be.null;
expectres.status.to.not.equal404;
expectres.body.message.to.not.be.equal "芋぀かりたせん";
終わり;
};
};

ログ゚ラヌでテストに倱敗゜ケットがハングアップ
it '/ getResetCodePasswordルヌトをテストする'、完了=> {
チャむ
.requestサヌバヌ
.patch "/ getResetCodePassword"
。送信{ }
.enderr、res=> {
console.logerr;
終わり;
}
}

`` `

このペヌゞは圹に立ちたしたか
0 / 5 - 0 評䟡