Node.js localAddress的节点js环境变量
网络是否有类似于NODE_TLS_REJECT_UNAUTHORIZED的环境变量?我使用了许多通过套接字/http连接到外部服务的节点模块,这些模块不提供设置localAddress的选项Node.js localAddress的节点js环境变量,node.js,Node.js,网络是否有类似于NODE_TLS_REJECT_UNAUTHORIZED的环境变量?我使用了许多通过套接字/http连接到外部服务的节点模块,这些模块不提供设置localAddress的选项 如果不存在这样一个变量,请考虑任何想法/解决方法。谢谢 没有这样的环境变量 作为一种解决方法,您可以在存在特定环境变量时使用monkeypatchnet.Socket#connect,并将其用作本地地址: const net = require('net'); if (process.env.LOCAL_
如果不存在这样一个变量,请考虑任何想法/解决方法。谢谢 没有这样的环境变量 作为一种解决方法,您可以在存在特定环境变量时使用monkeypatch
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
的模块,这可能会排除自行建立连接的本机模块(如某些数据库驱动程序)
为了解决这些问题,您需要求助于外部解决方案,如(我从未使用过这种解决方案,因此无法说明它是否有效)。外部服务上的本地地址是什么意思,您可能有远程地址,请澄清我指的是套接字应连接的本地地址