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)
我发现在 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)