2016-01-16 52 views
0

這應該是一個微不足道的問題。假設我有我的漂亮文件,foo.js。我用node foo.js運行它。它運行並運行。當它仍在運行時,我打開我最喜歡的文本編輯器並編輯foo.js,爲代碼添加了很多錯誤。在執行時編輯NodeJS文件

我可以確定這不會影響foo.js的當前執行嗎?當我假定文件將在執行開始時被讀取,我是否正確,然後將不需要再讀取它,因爲它將被保存在內存中?或者當文件已經執行時,可以對文件進行編輯?

+0

是的,你說得對。這在您部署時也很有用。但是如果不是從一開始就讀取所有模塊,那麼對於真正的程序(通常不止一個文件)可能會更危險一點。 –

+0

太棒了。非常感謝。 –

回答

1

您在命令行上指定的初始文件(如node foo.js)的node.js代碼模型是,在啓動時,從磁盤讀取foo.js,解析爲Javascript字節代碼,然後執行。您從該文件中定義的任何函數或變量都將保存在內存中。沒有任何情況下,node.js將完全依靠自己,重讀foo.js

一些潛在的地方,它可以得到重讀是:

  1. 如果您有指foo.js在磁盤上,如require()陳述或一些代碼,實際上是從磁盤讀取它的一些特定的代碼。

  2. 如果使用任何自動重啓工具,如forever。在這種情況下,如果您的進程崩潰並永久重新啓動,那麼在重新啓動期間顯然會讀取foo.js的新副本。

  3. 如果您分叉,產卵或執行您自己的過程。請注意,這可能發生在某些形式的動態集羣或某些類型的代碼中,僅在某些情況下啓動新進程。

0

使用Node.JS執行文件時,它只能讀取一次。如果您在執行過程中編輯文件,它不會影響執行。您可以安全地編輯它,而不用擔心錯誤。

當然,這是不同的,如果你是動態加載一些模塊,例如:

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

如果你已經加載之前編輯myModule.js,將它與變化加載。