tcpproxy.js 報錯:getaddrinfo ENOTFOUND localhost和解決方法


 

報錯情況

報錯出現的情況:我的項目之前在本地執行npm run dev是可以成功運行的。在一次斷網的情況下,執行了npm run dev,第一次出現報錯,這時才意識到是斷網了。等有網了重新執行npm run dev,報錯依然出現。
報錯信息:

Error: getaddrinfo ENOTFOUND localhost at errnoException (dns.js:50:10) at GetAddrInfoReqWrap.onlookup [as oncomplete] (dns.js:95:26)

具體截圖:
clipboard.png

查了資料,大部分人簡單的說是要修改hosts配置。但是對我這種弱雞來說,我想知道,為什么會報錯,而且要怎么修改host文件。。。

OK言歸正傳,這篇文章提到,根據報錯內容,推斷是localhost的問題。有可能是localhost沒有綁定127.0.0.1,我就當是localhost沒有綁定127.0.0.1吧,由於我在這方面的知識儲備為0,所以我還是不太明白報錯原因。

解決方法

1.打開hosts文件

終端執行:**sudo vim /etc/hosts**,打開hosts文件。

2.編輯hosts文件

按 **i** 進入編輯模式,如果你的hosts文件最后一行有 **0.0.0.0 account.xxx.xxx**,在這一行的上一行輸入 **127.0.0.1 localhost**;沒有,則在最后一行輸入**127.0.0.1 localhost**。

3.保存hosts文件

按 **esc** 退出編輯模式,最后輸入**:wq**,保存並退出(:(英文冒號)表示進入了底線命令模式,在底線命令模式下,q表示退出程序,w表示保存文件,所以:wq表示保存並退出,這里涉及到vim的簡單使用,找度娘了解更多~)。

插曲

我在第一次打開hosts文件的時候,看到hosts文件已經有127.0.0.1 localhost,就以為localhost已經綁定127.0.0.1,鬧了個烏龍。實際上 # 號那一行代表的是注釋,好羞恥~
clipboard.png

 

 

var net = require("net");

process.on("uncaughtException", function(error) {
  console.error(error);
});

if (process.argv.length != 5) {
  console.log("usage: %s <localport> <remotehost> <remoteport>", process.argv[1]);
  process.exit();
}

var localport = process.argv[2];
var remotehost = process.argv[3];
var remoteport = process.argv[4];

var server = net.createServer(function (localsocket) {
  var remotesocket = new net.Socket();

  remotesocket.connect(remoteport, remotehost);

  localsocket.on('connect', function (data) {
    console.log(">>> connection #%d from %s:%d",
      server.connections,
      localsocket.remoteAddress,
      localsocket.remotePort
    );
  });

  localsocket.on('data', function (data) {
    var flushed = remotesocket.write(data);
    if (!flushed) {
      localsocket.pause();
    }
  });

  remotesocket.on('data', function(data) {
    var flushed = localsocket.write(data);
    if (!flushed) {
      remotesocket.pause();
    }
  });

  localsocket.on('drain', function() {
    remotesocket.resume();
  });

  remotesocket.on('drain', function() {
    localsocket.resume();
  });

  localsocket.on('close', function(had_error) {
    console.log("%s:%d - closing remote",
      localsocket.remoteAddress,
      localsocket.remotePort
    );
    remotesocket.end();
  });

  remotesocket.on('close', function(had_error) {
    console.log("%s:%d - closing local",
      localsocket.remoteAddress,
      localsocket.remotePort
    );
    localsocket.end();
  });

});

server.listen(localport);

console.log("redirecting connections from 127.0.0.1:%d to %s:%d", localport, remotehost, remoteport);

  

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM