Pertanyaan Mulai aplikasi node lain menggunakan node.js?


Saya memiliki dua aplikasi node terpisah. Saya ingin salah satu dari mereka dapat memulai yang lain pada titik tertentu dalam kode. Bagaimana saya akan melakukan ini?


32
2017-09-18 00:57


asal


Jawaban:


Menggunakan child_process.fork(). Ini mirip dengan spawn(), tetapi digunakan untuk membuat seluruh contoh baru V8. Oleh karena itu khusus digunakan untuk menjalankan contoh baru Node. Jika Anda hanya menjalankan perintah, gunakan spawn() atau exec().

var fork = require('child_process').fork;
var child = fork('./script');

Perhatikan bahwa saat menggunakan fork(), secara default, stdio streaming dikaitkan dengan induk. Ini berarti semua output dan kesalahan akan ditampilkan dalam proses induk. Jika Anda tidak ingin streaming dibagikan dengan orang tua, Anda dapat menentukan stdio properti dalam opsi:

var child = fork('./script', [], {
  stdio: 'pipe'
});

Kemudian Anda dapat menangani proses secara terpisah dari aliran proses master.

child.stdin.on('data', function(data) {
  // output from the child process
});

Juga perlu dicatat bahwa prosesnya tidak keluar secara otomatis. Anda harus menelepon process.exit() dari dalam proses Node spawned untuk itu untuk keluar.


37
2017-09-18 01:01



Anda dapat menggunakan modul child_process, itu akan memungkinkan untuk mengeksekusi proses eksternal.

var childProcess = require('child_process'),
     ls;

 ls = childProcess.exec('ls -l', function (error, stdout, stderr) {    if (error) {
     console.log(error.stack);
     console.log('Error code: '+error.code);
     console.log('Signal received: '+error.signal);    }    console.log('Child Process STDOUT: '+stdout);    console.log('Child Process STDERR: '+stderr);  });

 ls.on('exit', function (code) {    console.log('Child process exited with exit code '+code);  });

http://docs.nodejitsu.com/articles/child-processes/how-to-spawn-a-child-process


2
2017-09-18 01:04