NodeJS 使用PM2和child_process.exec,而无需每次打开新的命令提示符

bvjxkvbb  于 2022-12-29  发布在  Node.js
关注(0)|答案(1)|浏览(165)
async function test() {
    const shell = require("util").promisify(require("child_process").exec);

    const shellResult = await shell("node --version");
    console.log(shellResult);
}
test();

在我的程序中,我想做一些类似上面的函数。我使用PM2来启动我的程序。但是当涉及到这个函数时,PM2每次都会打开一个新的cmd.exe,并在它完成时关闭它,随着时间的推移,这会变得很烦人。
有没有一种方法可以完成类似上面的功能,而不必让PM2每次都打开一个新的cmd提示符?或者至少有一种方法可以在后台打开这些cmd提示符?
额外信息:

  • 节点版本:15.9.0
  • PM2版本:4.5.4
  • 操作系统: windows 10
  • 上面的函数可能运行得太快了,所以很难判断PM2是否真的打开了一个新的cmd.exe。如果您执行await shell("git pull origin master")或其他需要更长时间的操作,那么您实际上可以看到它的打开和关闭新的cmd提示
  • 我以pm2 start启动程序
  • ecosystem.config.js文件看起来像这样:
module.exports = {
  "apps": [{
    "script": "master.js",
    "node_args": ["--inspect=10000"]
  }]
};
58wvjzkj

58wvjzkj1#

async function test() {
    const shell = require("util").promisify(require("child_process").exec(cmd,{windowsHide:true});
    const shellResult = await shell("node --version");
    console.log(shellResult);
}
test();

您可以使用

windowsHide: true

布尔值来解决这个问题。
参考链接:[节点. js v19.3.0:child_process.exec(命令,选项][,回调])

相关问题