簡體   English   中英

執行時編輯NodeJS文件

[英]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

它可能會被重讀的一些潛在位置是:

  1. 如果您有一些在磁盤上引用foo.js特定代碼require()例如require()語句)或一些實際從磁盤讀取它的代碼。

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

  3. 如果您分叉,生成或執行自己的進程。 請注意,這可能以某些形式的動態集群或某些類型的代碼(僅在某些情況下才啟動新過程)發生。

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

當然,如果要動態加載某些模塊,則有所不同,例如:

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

如果在加載myModule.js之前對其進行編輯,它將隨更改一起加載。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM