隐藏子进程控制台窗口

28

在Windows上使用Node.js的child_process.spawn生成一个新的子进程时,它总是会打开一个空白的控制台窗口,直到子进程结束。

有没有办法避免这种情况呢?

即我们希望使用forever将应用程序作为后台服务运行。然而,它并不是真正的后台,因为它不断地打开和关闭空白控制台窗口...

编辑:将子应用程序运行在“安静”模式下不是一个选项,因为正在生成的进程的部分内容是wmic


1
可能是如何在使用VLC的虚拟接口时防止控制台显示的重复问题。 - CodeCaster
复制品和Node的文档都没有提到通过代码实现这一点的方法。也许你可以通过命令行参数配置客户端应用程序,使其不显示窗口。如果你将Node作为Windows服务运行,你也不会看到窗口。 - CodeCaster
@ronag 你有没有尝试为 stdoutstderr 添加 data 监听器?我在谈论 spawn - Gyandeep
1
我很惊讶为什么窗口没有弹出来。 - Gyandeep
3
问题具体涉及“forever”和在命令行上自己运行节点并离开时的区别。这种情况只在我使用“forever”时出现,而“spawn”和“exec”都不会出现这种情况。 - Brent
显示剩余6条评论
4个回答

1

2017年,引入了一个windowsHide选项:

隐藏在Windows系统上通常会创建的子进程控制台窗口。 默认值:false


0

使用detached属性,例如:

spawn('node', [filePath, args], {
            detached: true,
            stdio: ['inherit', 'inherit', 'inherit', 'ipc'],
        })

0

这种方式将永远为应用程序生成一个控制台,而不是为每个生成的控制台窗口打开。

forever -c "cmd /c  node" start app.js

0

继续RanP的回答,

forever start --uid "foo" -c "cmd /c node" app.js

在使用-c参数之前,您需要“start”,而--uid是可选的。请注意,在-c命令中少了一个空格,从而使其正常工作。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接