在NodeJS文件执行时编辑它

时间:2016-01-16 19:25:28

标签: node.js

这应该是一个微不足道的问题。假设我有漂亮的文件foo.js。我用node foo.js运行它。它运行,运行和运行。当它仍在运行时,我打开我最喜欢的文本编辑器并编辑foo.js,在代码中添加了大量错误。

我可以确定这不会影响foo.js的当前执行吗?当我假设在执行开始时将读取文件时,我是否正确,然后将不再需要再次读取它,因为它将保留在内存中?或者,当文件已经执行时,对文件的编辑是否会导致某些内容?

2 个答案:

答案 0 :(得分:1)

您在命令行(例如node foo.js)上指定的初始文件的node.js代码模型是,在启动时,从磁盘读取foo.js,解析为Javascript字节代码然后执行。从那时起,您在该文件中定义的任何函数或变量都将保留在内存中。没有任何情况node.js完全靠自己重新阅读foo.js

可以重读的一些潜在地方是:

  1. 如果你有一些特定代码引用磁盘上的foo.js,例如require()语句或某些实际从磁盘读取它的代码。

  2. 如果您使用任何自动重启工具,例如forever。在这种情况下,如果您的进程崩溃并永远重新启动它,它显然会在重新启动期间读取foo.js的新副本。

  3. 如果您分叉,生成或执行自己的进程。请注意,这可能发生在某些形式的动态集群或某些类型的代码中,这些代码仅在某些情况下启动新进程。

答案 1 :(得分:0)

使用Node.JS执行文件时,只读一次。如果在执行期间编辑文件,则不会影响执行。您可以安全地编辑它而不必担心错误。

当然,如果您动态加载某些模块,则会有所不同,例如:

setTimeout(function() {
  var myModule = require("./myModule.js");
}, 10000);

如果在加载之前编辑myModule.js,则会加载更改。