gpt4 book ai didi

node.js - 我怎样才能让 Node 重新处理/etc/hosts?

转载 作者:搜寻专家 更新时间:2023-11-01 00:08:14 26 4
gpt4 key购买 nike

因此,对于单元测试,我需要将域重定向到特定机器的新 IP。我在 Node 中设置了一个路由来更新机器的主机文件。

exports.hosts = function hosts(req, res) {
var domain = req.params.domain;
var ip = req.params.ip;

if (domain === 'localhost') {
res.json(500, {message: 'invalid domain'});
return;
}

async.waterfall([
function (callback) {
fs.readFile('/etc/hosts', callback);
},
function (data, callback) {
// Remove existing entry
var lines = data.toString().split('\n');
data = '';
for (var line in lines) {
if (!_str.endsWith(lines[line], domain) && lines[line]) {
data += lines[line] + '\n';
}
}
callback(null, data);
},
function (data, callback) {
if (ip) {
data += ip + ' ' + domain + '\n';
}
callback(null, data);
},
function (data, callback) {
fs.writeFile('/etc/hosts', data, callback);
}
],
function (err) {
if (err) {
res.json(500, err);
} else {
res.send(200);
}
});
};

编辑工作正常。问题是我从 Node 进程对域的下一次调用仍然转到最后一个 IP 地址。如果我重新启动 Node,它会在主机文件中看到新的 IP 地址。

如何让 Node 在不重新启动进程的情况下查看更新后的主机文件?

最佳答案

我知道这已经晚了,但我认为与环境变量类似,可能会加载和缓存主机文件信息。出于同样的原因,您必须重新启动软件才能注意到那些新的环境变量,您可能需要终止 Node 进程并重新启动它以获取新的主机条目。如果你安装类似 pm2 的东西,你会稍微调整你的初始启动命令:pm2 start app.js 而不是 node app.js。然后每次你更新你的主机文件时,杀死你的应用程序并且 pm2 将重新启动它。终止您的应用程序就像 process.kill()process.exit() 或抛出错误一样简单。

关于node.js - 我怎样才能让 Node 重新处理/etc/hosts?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23924120/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com