这应该是一个微不足道的问题。假设我有漂亮的文件foo.js
。我用node foo.js
运行它。它运行,运行和运行。当它仍在运行时,我打开我最喜欢的文本编辑器并编辑foo.js
,在代码中添加了大量错误。
我可以确定这不会影响foo.js
的当前执行吗?当我假设在执行开始时将读取文件时,我是否正确,然后将不再需要再次读取它,因为它将保留在内存中?或者,当文件已经执行时,对文件的编辑是否会导致某些内容?
答案 0 :(得分:1)
您在命令行(例如node foo.js
)上指定的初始文件的node.js代码模型是,在启动时,从磁盘读取foo.js
,解析为Javascript字节代码然后执行。从那时起,您在该文件中定义的任何函数或变量都将保留在内存中。没有任何情况node.js
完全靠自己重新阅读foo.js
。
可以重读的一些潜在地方是:
如果你有一些特定代码引用磁盘上的foo.js
,例如require()
语句或某些实际从磁盘读取它的代码。
如果您使用任何自动重启工具,例如forever
。在这种情况下,如果您的进程崩溃并永远重新启动它,它显然会在重新启动期间读取foo.js
的新副本。
如果您分叉,生成或执行自己的进程。请注意,这可能发生在某些形式的动态集群或某些类型的代码中,这些代码仅在某些情况下启动新进程。
答案 1 :(得分:0)
使用Node.JS执行文件时,只读一次。如果在执行期间编辑文件,则不会影响执行。您可以安全地编辑它而不必担心错误。
当然,如果您动态加载某些模块,则会有所不同,例如:
setTimeout(function() {
var myModule = require("./myModule.js");
}, 10000);
如果在加载之前编辑myModule.js
,则会加载更改。