Да, вы можете найти ответ в документе Node.js здесь .
Если вы запускаете это в Windows, прочитайте этот раздел , вам нужно убедиться, что дочерний процесс выполняется в терминале (cmd.exe в Windows).
Вы должны иметь возможность использовать:
const child = spawn('node index.js', ['/c', 'my.bat']);
ИЛИ
exec('node index.js', (err, stdout, stderr) => {
if (err) {
console.error(err);
return;
}
console.log(stdout);
});
В основном вызов " spawn (...) " вернет ChildProcess, который EvenEmitter .Он имеет два выходных потока: « stderr », « stdout », которые вы будете прослушивать для событий «data».
- Вы прочитали ошибкувывод из порожденного (дочернего) процесса в потоке " stderr ".
- Нормальный вывод из порожденного (дочернего) процесса выполняется в потоке " stdout ".
Как прослушивать нормальный вывод и ошибку:
child.stdout.on('data', (data) => {
console.log(`stdout: ${data}`);
});
child.stderr.on('data', (data) => {
console.log(`stderr: ${data}`);
});
Чтобы узнать, когда существовал дочерний процесс, прослушайте событие " close "
child.on('close', (code) => {
// Perform cleanup.
});