【问题标题】:Hide child process console window隐藏子进程控制台窗口
【发布时间】:2015-10-04 18:14:04
【问题描述】:

在 windows 上的 nodejs 中生成新子进程 (child_process.spawn) 时,它总是会打开一个空白控制台窗口,该窗口一直保持打开状态,直到子进程结束。

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

即我们想使用forever 将我们的应用程序作为后台服务运行。但是,它不是很背景,因为它会不断打开和关闭空白控制台窗口...

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

【问题讨论】:

  • 重复的或 Node 的文档提到了一种通过您的代码执行此操作的方法。也许您可以通过命令行参数配置客户端应用程序,它不应该显示一个窗口。如果您将 Node 作为 Windows 服务运行,则无论如何您都不会看到窗口。
  • 我使用spawn,但我从未在 Windows 上获得单独的窗口。我为stdoutstderr 设置了监听器。也许这就是原因(我不确定)......但我想这取决于你在你的 spawn 中调用什么。
  • 我很惊讶为什么窗口没有出现在我面前。
  • 这个问题具体与永远与自己在命令行上运行节点并离开它有关。对我来说,它只会永远发生。 spawn 和 exec 都这样做。

标签: javascript node.js windows child-process forever


【解决方案1】:

2017 年,windowsHide 选项为 introduced

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

【讨论】:

    【解决方案2】:

    这种方式将永远为应用程序生成一个控制台。并且不为每次生成一个控制台窗口打开。

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

    【讨论】:

      【解决方案3】:

      按照 RanP 的回答,

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

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

      【讨论】:

        【解决方案4】:

        使用detached 属性喜欢

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

        【讨论】:

          猜你喜欢
          • 2013-07-04
          • 1970-01-01
          • 2010-10-11
          • 2019-07-22
          • 2012-10-14
          • 2011-04-03
          • 2023-03-28
          • 1970-01-01
          相关资源
          最近更新 更多