[英]Editing NodeJS file while it is executing
這應該是一個瑣碎的問題。 說我有我的漂亮文件foo.js
我使用node foo.js
運行它。 它運行並運行並運行。 當它仍在運行時,我打開我最喜歡的文本編輯器並編輯foo.js
,從而在代碼中添加了很多錯誤。
我可以確定這不會影響foo.js
的當前執行嗎? 我以為文件將在執行開始時被讀取,然后由於將其保存在內存中而無需再次讀取文件,對嗎? 還是對文件的編輯在執行后會引起某些問題?
您在命令行上指定的初始文件(例如node foo.js
)的node.js代碼模型是,在啟動時從磁盤讀取foo.js
,將其解析為Javascript字節代碼,然后執行。 此后,您在該文件中定義的任何函數或變量都將保留在內存中。 在任何情況下, node.js
都不會完全自己重新讀取foo.js
它可能會被重讀的一些潛在位置是:
如果您有一些在磁盤上引用foo.js
特定代碼require()
例如require()
語句)或一些實際從磁盤讀取它的代碼。
如果您使用任何自動重啟工具,例如forever
。 在這種情況下,如果您的進程崩潰並永遠重新啟動它,則顯然foo.js
在重新啟動期間讀取foo.js
的新副本。
如果您分叉,生成或執行自己的進程。 請注意,這可能以某些形式的動態集群或某些類型的代碼(僅在某些情況下才啟動新過程)發生。
使用Node.JS執行文件時,該文件只能讀取一次。 如果在執行期間編輯文件,則不會影響執行。 您可以安全地編輯它,而不必擔心錯誤。
當然,如果要動態加載某些模塊,則有所不同,例如:
setTimeout(function() {
var myModule = require("./myModule.js");
}, 10000);
如果在加載myModule.js
之前對其進行編輯,它將隨更改一起加載。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.