gpt4 book ai didi

node.js - Node 生成子进程在 Windows 中不起作用

转载 作者:行者123 更新时间:2023-12-02 19:40:07 25 4
gpt4 key购买 nike

我在 Windows 上使用 spawn 设置了一个简单的脚本,它的输出是:

spawn error: Error: spawn dir ENOENT
spawn child process closed with code -4058

代码如下:

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}`);
});
})();

最佳答案

您需要 spawn()shell: true 选项,如 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}`);
});
})();

我的猜测是因为 dir 不是一个实际的程序(在 Windows 中没有 dir.exe),你必须告诉 spawn() 命令是否应该在命令 shell 中或没有命令 shell 的情况下运行它。而在其他平台上,诸如 ls 之类的东西是可以以任何一种方式运行的实际程序。

关于node.js - Node 生成子进程在 Windows 中不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60386867/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com