在Windows 10中,
我有一个快递服务器,可以在路线中启动命令

const exec = util.promisify(require('child_process').exec);
module.exports = router.use(function(req, res) {
  exec('start "Title" "C:\\Program Files (x86)\\Plex\\Plex Media Server\\Plex Media Server.exe')
  .then((r) => {
    res.send("Ok.");
  })
  .catch((e) => {
    res.status(401).send("Running error.", error);
  });
}


当客户端请求此路由时,Plex服务器将启动,但服务器永远不会呈现“确定”。但是,如果我手动关闭Plex Server,则程序流程将达到res.send(“ Ok。”);。

在关闭Plex Server之前,我无法在不停止服务器响应的情况下启动此命令。

拼命编辑

我缺少一些东西。
如果我运行节点并在节点逗号行中输入:

console.log(require('child_process').exec('start "xx" "C:\\Program Files (x86)\\Plex\\Plex Media Server\\Plex Media Server.exe"')); console.log("ok");


它打开Plex Serven,打印“ ok”,节点控制台等待另一个命令

但是,如果我这样创建一个mynode.js

console.log(require('child_process').exec('start "pp" "C:\\Program Files (x86)\\Plex\\Plex Media Server\\Plex Media Server.exe"')); console.log('ok');


从Windows CMD:

c:\tmp> node mynode.js


它会打开Plex Server,打印“确定”,但是直到我不关闭Plex Server为止,它都不会继续。

最佳答案

经过大量烦人的反复试验后,我找到了解决此问题的方法。

exec('start "Title" "C:\\Program Files (x86)\\Plex\\Plex Media Server\\Plex Media Server.exe', { timeout : 1000 })


一秒钟后,exec将控制权返回给主程序。

关于node.js - require('child_process')。exec停止程序,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/55504195/

10-16 17:41