1

今これをテストするためのツールや時間がないので、私はこれを求めていますが、その考えは私を悩ませています. 遊ぶ時間ができたら、自分で答えます。

node.js では、require() はどのように機能しますか? 必要な機能をメモリに保持していますか? または、ファイルを新たに読み取りますか?

例:

launcher.js

var cluster = require('cluster');

if (cluster.isMaster) {
    cluster.fork();
    cluster.on('exit', function () {
        cluster.fork();
    }
}
if (cluster.isWorker) {
    var self = require('self_modifying.js');
    self.start()
}

self_modifying.js に「メイン」メソッドである start() 関数がある限り、独自のソース ファイルと process.exit(0) を変更するだけで自己更新でき、新しいコードで再起動できます。 ?

4

2 に答える 2

1

@Tom Grant が指摘したように、モジュールはキャッシュされます。したがって、ここで説明されているように、アプリケーションを新たに開始する前にアプリケーションを参照する必要があります

これは機能しますが、関数の開始をエクスポートするには self_modifying.js が必要です

var cluster = require('cluster');

if (cluster.isMaster) {
    cluster.fork();
    cluster.on('exit', function () {
        delete require.cache[require.resolve('/full/path/to/self_modifying.js')];
        cluster.fork();
    }
}
if (cluster.isWorker) {
    var self = require('self_modifying.js');
    self.start()
}
于 2013-11-29T16:52:48.520 に答える