在终端中使用npm install marantz-avr
时,您会在终端中看到“过程动画”。
但是当我通过以下方式执行npm install
时
let spawn = require('child_process').spawn;
let npm = spawn('npm', ['install', 'marantz-avr', '--no-save']);
npm.stdout.on('data', function (data) {
process.stdout.write(data);
});
npm.stderr.on('data', function (data) {
process.stdout.write(data);
});
未显示动画。仅显示“普通文本”。有办法解决这个问题吗?
答案 0 :(得分:1)
在选项中传递{ stdio: 'inherit' }
似乎是这样做的,尽管我很好奇为什么你的代码和/或管道到父stdout / stderr上都没有用。
https://nodejs.org/api/child_process.html#child_process_options_stdio
let npm = spawn('npm', ['install', 'marantz-avr', '--no-save'], { stdio: 'inherit' });
您还需要确保子进程在父进程退出之前退出:
function onExit () {
npm.kill('SIGINT');
}
process.on('SIGINT', onExit);
process.on('SIGTERM', onExit);
process.on('exit', onExit);