在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/