我尝试根据这个API示例生成子进程:https://nodejs.org/api/child_process.html#spawning-bat-and-cmd-files-on-windows
我只想并行运行3个命令(来自NPM,如npm run x-script
),并将它们的输出流到父进程,但我得到的结果是:
节点:事件:491
throw er; // Unhandled 'error' event
错误:生成npm运行调试js-watch ENOENT
- 在进程.子进程.句柄.onexit(节点:内部/子进程:283:19)
- 在onErrorNT(节点:内部/子进程:478:16)
- 在processTicksAndRejections(节点:internal/process/task_queues:83:21)处的子进程示例上发出了“错误”事件,位置为:
- 在进程.子进程.句柄.onexit(节点:内部/子进程:289:12)
- 在onErrorNT(节点:内部/子进程:478:16)
- 在进程滴答和拒绝(节点:内部/进程/任务队列:83:21)
{
errno: -4058,
code: 'ENOENT',
syscall: 'spawn npm run debug-js-watch',
path: 'npm run debug-js-watch',
spawnargs: []
}
代码如下:
const path = require('path');
const { spawn } = require('node:child_process');
function runInParallel(command, argumentsList) {
let childProcess = spawn(command, argumentsList);
childProcess.stdout.on('data', (data) => {
console.log(data.toString());
});
childProcess.stderr.on('data', (data) => {
console.error(data.toString());
});
/*
childProcess.on('exit', (code) => {
console.log(`Child exited with code ${code}`);
});
*/
}
runInParallel('npm run debug-js-watch', []);
runInParallel('npm run debug-css-watch', []);
runInParallel('npm run debug-serve', []);
2条答案
按热度按时间js81xvg61#
spawn
接受一个命令和一个参数列表。你可以通过拆分字符串来修复这个问题。bbmckpt72#
看起来
spawn
找不到npm
。我不得不改用exec
,它成功了: