2015-06-02 153 views
1

如在node.js中所瞭解的,如果編輯服務器端文件,則需要重新啓動應用程序才能進行更改。
現在我想知道是否有一種方法可以在服務器內部執行此操作,正如我們知道文件發生更改或沒有更改(基於上次修改日期)一樣,我們只需要重新運行應用程序或重新啓動應用程序或執行某些操作無需我們從命令行執行更改。
我們都知道如何做到這一點Grunt.js(或類似的東西)或supervisor,但我想這樣做沒有任何外部包。
非常感謝:)重新啓動node.js應用程序文件更改

+1

我已經嘗試過,基本的想法是有一個無法更改的主js文件。它會觀看所有其他文件。一旦檢測到文件更改,它將刪除先前的需求緩存並再次請求該文件。 – Surely

+0

所以文件無法正常重啓,對吧?必須有一個主文件? –

+0

我不知道這個,對不起 – Surely

回答

2

您最初可以在服務器啓動,使得它結束時重新開始。在Bash文件中,它只是一個遞歸函數。

function start(){ 
    node index.js 
    start 
} 

或分批在您的節點服務器文件goto語句

:start 
node index.js 
goto start 

然後,當你發現一個文件更改您只需結束該進程

用於觀看有該文件的模塊在那裏這使它更容易。例如。 watch

require('watch').watchTree('./server', process.exit); 
0

使用cluster.fork運行在一個子進程的所有代碼,並設置主進程fork一個新的子每當前面的孩子退出。然後簡單地使用chokidar在文件更改時立即退出孩子。

// Put this at the very beginning of your code 
var cluster = require('cluster'); 
if (cluster.isMaster) { 
    cluster.on('exit', cluster.fork); 
    cluster.fork(); 
    return; 
} 
require('chokidar').watch('./**/*.*').on('change', process.exit); 

// Rest of the code here 
... 
相關問題