有没有办法在运行时更改node.js?
喜欢在javascript文件运行时对其进行编辑,然后在运行时进行相应更改。
答案 0 :(得分:2)
是
您必须通过另一个监视脚本进行更改的文件加载文件。您可能需要一些在重新启动时在脚本中运行的设置/拆卸代码。
var fs = require('fs');
var file = 'file.js';
var script;
function loadScript() {
if (script) {
if (typeof script.teardown === 'function') {
script.teardown();
}
delete require.cache[file];
}
script = require(file);
}
fs.watch(file, function(event, filename) {
if (event !== 'change') return;
loadScript();
});
loadScript();
fs.watch API在各个平台上并非100%一致,在某些情况下无法使用。
答案 1 :(得分:0)
不,这是不可能的。当您启动节点服务器/应用程序时,它将加载当前版本的文件。如果你在启动后进行更改,它将不会发现。您必须终止该应用并重新启动以使这些更改生效。
有些像node-dev这样的实用程序会为您执行此操作。他们监视文件系统是否有变化,并根据需要重启应用程序(以及其他一些功能,如咆哮通知)。
我更喜欢手动重启应用。这样你就可以准确地知道它正在运行什么版本,并且可以在决定再次尝试之前多次保存对文件的更改。
答案 2 :(得分:0)
您检查过Node-supervisor
答案 3 :(得分:0)
这是完全可能的。
不要在标题中要求您的模块;相反,在需要时通过呼叫加载它们。
此外,您还可以在包含新模块之前调用require.undef('./myModule')
以删除现有版本。如果您想在运行时删除新行为,可以在文件系统中扫描任何新模块名称。
我已经多次使用节点实现了插件模式,这样子模块更新将包含将在运行时拾取的新插件。
享受。
答案 4 :(得分:0)