2017-06-17 85 views
0

是否有淨localAddress任何環境變量,在某種程度上類似於NODE_TLS_REJECT_UNAUTHORIZED?我使用了許多通過socket/http連接到外部服務的節點模塊,這些模塊不提供設置localAddress的選項。節點JS環境變量將localAddress

如果這樣的變量不存在,任何想法/解決方法將被理解的。謝謝!

+0

你怎麼對外部服務的意思是本地地址,你可以有遠程地址,請澄清 – sBanda

+0

我指的是本地地址插座應連接[看這裏(https://nodejs.org/api/net.html #net_socket_connect_options_connectlistener) – Gabriel

回答

1

沒有這樣的環境變量。

作爲一種變通方法,你可以在一個特定的環境變量存在猴補丁net.Socket#connect,並把它作爲本地地址:

const net = require('net'); 

if (process.env.LOCAL_ADDRESS) { 
    const connect = net.Socket.prototype.connect; 

    net.Socket.prototype.connect = function(options) { 
    if (! options.localAddress) { 
     options.localAddress = process.env.LOCAL_ADDRESS; 
    } 
    return connect.apply(this, arguments); 
    }; 
} 

要使用:

$ env LOCAL_ADDRESS=xx.xx.xx.xx node your-script.js 

這應該某處早早就被加載在你的代碼中,並且只適用於(最終)使用net.Socket#connect的模塊,這可能會排除自己建立連接的本地模塊(如某些數據庫驅動程序)。

爲了也抓住這些,你需要求助於外部解決方案,如libsis(我從來沒有用過自己,所以不能說,如果它實際上工作)。