本地地址的节点 js 环境变量



Net localAddress是否有任何环境变量,类似于NODE_TLS_REJECT_UNAUTHORIZED?我使用许多通过套接字/http连接到外部服务的节点模块,这些模块不提供设置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这样的外部解决方案(我自己从未使用过,所以不能说它是否真的有效)。

最新更新