0
是否有淨localAddress任何環境變量,在某種程度上類似於NODE_TLS_REJECT_UNAUTHORIZED?我使用了許多通過socket/http連接到外部服務的節點模塊,這些模塊不提供設置localAddress的選項。節點JS環境變量將localAddress
如果這樣的變量不存在,任何想法/解決方法將被理解的。謝謝!
是否有淨localAddress任何環境變量,在某種程度上類似於NODE_TLS_REJECT_UNAUTHORIZED?我使用了許多通過socket/http連接到外部服務的節點模塊,這些模塊不提供設置localAddress的選項。節點JS環境變量將localAddress
如果這樣的變量不存在,任何想法/解決方法將被理解的。謝謝!
沒有這樣的環境變量。
作爲一種變通方法,你可以在一個特定的環境變量存在猴補丁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
(我從來沒有用過自己,所以不能說,如果它實際上工作)。
你怎麼對外部服務的意思是本地地址,你可以有遠程地址,請澄清 – sBanda
我指的是本地地址插座應連接[看這裏(https://nodejs.org/api/net.html #net_socket_connect_options_connectlistener) – Gabriel