Cor*_*ing 2 windows spawn node.js
我有一个在 Windows 上使用 spawn 的简单脚本设置,其输出是:
spawn error: Error: spawn dir ENOENT
spawn child process closed with code -4058
Run Code Online (Sandbox Code Playgroud)
这是代码:
const spawn = require('child_process').spawn;
const spawnTest = (() => {
const dir = spawn('dir');
dir.stdout.on('data', (data) => {
console.log(`spawn stdout: ${data}`);
});
dir.stderr.on('data', (data) => {
console.log(`spawn stderr: ${data}`);
});
dir.on('error', (code) => {
console.log(`spawn error: ${code}`);
});
dir.on('close', (code) => {
console.log(`spawn child process closed with code ${code}`);
});
dir.on('exit', (code) => {
console.log(`spawn child process exited with code ${code}`);
});
})();
Run Code Online (Sandbox Code Playgroud)
jfr*_*d00 10
您需要as 中shell: true的选项。 spawn()spawn('dir', {shell: true});
此代码在 Windows 上按预期工作:
const spawn = require('child_process').spawn;
const spawnTest = (() => {
const dir = spawn('dir', {shell: true}); // <== shell: true option
dir.stdout.on('data', (data) => {
console.log(`spawn stdout: ${data}`);
});
dir.stderr.on('data', (data) => {
console.log(`spawn stderr: ${data}`);
});
dir.on('error', (code) => {
console.log(`spawn error: ${code}`);
});
dir.on('close', (code) => {
console.log(`spawn child process closed with code ${code}`);
});
dir.on('exit', (code) => {
console.log(`spawn child process exited with code ${code}`);
});
})();
Run Code Online (Sandbox Code Playgroud)
我的猜测是,因为dir这不是一个实际的程序(Windows 中没有dir.exe),所以您必须告诉spawn()命令它是应该在命令 shell 中运行还是没有命令 shell 运行。而在其他平台上,诸如此类的东西ls是可以以任何方式运行的实际程序。
| 归档时间: |
|
| 查看次数: |
5094 次 |
| 最近记录: |