如何在单独的cmd窗口或终端中启动nodejs子进程

man*_*nas 5 javascript node.js

我想在单独的控制台中启动一个nodejs子进程窗口中启动一个nodejs子进程,而不是监听它的数据事件。

根据文档

使用分离选项,孩子应该有自己的控制台窗口,但它没有发生。

我在 main.js 中的代码

const { spawn} = require("child_process");

var child = spawn("node", ["./count.js"], {
    detached: true,
    stdio: 'ignore'
});
Run Code Online (Sandbox Code Playgroud)

在 count.js 文件中,我有

console.log(`running in child process with PID ${process.pid})
Run Code Online (Sandbox Code Playgroud)

eik*_*iko 1

我发现在 Windows 10 上工作的唯一解决方案是完全生成一个单独的 cmd.exe 进程:

const { spawn} = require("child_process");

var child = spawn("cmd.exe", ["/c", "node", "count.js"], {
    detached: true,
    stdio: 'ignore'
});
Run Code Online (Sandbox Code Playgroud)

另外,请务必为您的子进程添加一些延迟,以便在您看到它之前它不会退出:

console.log(`running in child process with PID ${process.pid}`);

// wait 5 seconds before closing
setTimeout(() => true, 5000);
Run Code Online (Sandbox Code Playgroud)

最后,如果您希望子窗口完全独立于父窗口(即使父窗口关闭也保持打开状态),则应该在生成它后取消引用它:

child.unref();
Run Code Online (Sandbox Code Playgroud)