Node.js 在节点中繁殖,在终端中不显示动画
在终端中使用Node.js 在节点中繁殖,在终端中不显示动画,node.js,Node.js,在终端中使用npm安装marantz avr时,您会在终端中看到一个“过程动画” 但是,当我通过以下方式执行npm安装时: 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安装marantz avr
时,您会在终端中看到一个“过程动画”
但是,当我通过以下方式执行npm安装时:
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);
});
不显示动画。中仅显示“普通文本”。有没有办法解决这个问题?在选项中传递
{stdio:'inherit'}
似乎可以解决这个问题,尽管我很好奇为什么您的代码和/或管道到父stdout/stderr上不起作用
您还需要确保在父进程退出之前先退出子进程:
function onExit () {
npm.kill('SIGINT');
}
process.on('SIGINT', onExit);
process.on('SIGTERM', onExit);
process.on('exit', onExit);
伟大的发现!现在ctrl+c不再终止进程。有什么想法吗?找到了:我应该使用:
{stdio:['inherit',inherit',inherit']}
而不是stdio:['inherit',inherit',inherit']
,stdio:['inherit',inherit']只是stdio:['inherit',inherit',inherit']的缩写。尽管在父进程退出之前,应该告诉子进程先退出。我更新了我的答案以显示这一点。
function onExit () {
npm.kill('SIGINT');
}
process.on('SIGINT', onExit);
process.on('SIGTERM', onExit);
process.on('exit', onExit);