有没有一种方法可以在node.js运行时更改它?
比如在它运行时编辑JavaScript文件,然后随着其运行相应地进行更改。
有没有一种方法可以在node.js运行时更改它?
比如在它运行时编辑JavaScript文件,然后随着其运行相应地进行更改。
是的。
你需要通过另一个监视脚本更改的文件来加载你的文件。每当脚本重新启动时,你可能需要一些设置/拆卸代码来运行。
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 在不同平台上并不完全一致,在某些情况下也可能无法使用。
不,这是不可能的。当你启动一个Node服务器/应用程序时,它会加载当前版本的文件。如果你在启动后进行更改,它将无法识别。你必须杀掉该应用程序并重新启动才能使这些更改生效。
有一些像node-dev这样的实用程序可以自动完成此操作。它们监视文件系统以进行更改,并根据需要重启应用程序(以及其他一些功能,例如Growl通知)。
我更喜欢手动重启应用程序。这样你就知道它运行的确切版本,并可以多次保存对文件的更改,然后再决定何时再试一次。
这是完全可能的。
只需不要在头文件中要求您的模块;相反,需要时通过调用加载它们。
此外,您还可以调用require.undef('./myModule')
在包含新模块之前放弃现有版本。如果您想在运行时添加新行为,可以扫描文件系统以查找任何新模块名称。
我已经多次使用node实现了插件模式,因此子模块更新将包括新插件,这些插件将在运行时被捕获。
享受吧。