有没有办法改变一个node.js运行?

有没有办法改变一个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在各个平台上不是100%一致的,在某些情况下不可用。

不,这是不可能的。 当你启动一个节点服务器/应用程序时,它将加载当前版本的文件。 如果您在启动后进行更改,它将不知道。 你将不得不杀死应用程序,并重新启动这些更改才能生效。

有一些像node-dev这样的工具可以帮你做到这一点。 他们监视文件系统的变化,并根据需要重新启动应用程序(以及一些其他function,如咆哮通知)。

我更喜欢手动重新启动应用程序。 这样,您就知道它正在运行的是哪个版本,并且可以在决定再次尝试之前多次保存对文件的更改。

你检查过节点监督员吗?

这是完全可能的。

只是不要求你的模块头; 而是通过在需要的时候调用来加载它们。

另外,在包含新模块之前,还可以调用require.undef('./myModule')来挖掘现有版本。 如果您希望在运行时删除新的行为,您可以扫描文件系统以获取任何新的模块名称。

我已经用节点多次实现了插件模式,这样一个子模块更新将包含新的插件,这些插件将在运行时被选中。

请享用。

你可以使用nodemon 。

nodemon将监视启动nodemon的目录中的文件,如果有任何文件更改,nodemon将自动重新启动节点应用程序。

在开发过程中使用Node的完美解决scheme。