通过cmd命令行启动后台服务
在electron窗体启动时调取后台服务exe文件
文章目录
一、将服务端文件打包进安装包
1、package.json文件配置
extraResources: {
from: "./server",
to: "server"
},
二、通过start命令启动服务端exe文件
1. 代码
代码如下(示例):
// 启动后台服务
// 方案1,不需要查看输出日志
// const {exec} = require("child_process")
// function runExec(){
// let cmdStr = "start ./server/backServer.exe"
// exec(cmdStr,{})
// }
方案2,可以查看启动服务打印日志
let serverProcess=null;
function startServer(){
let cmdStr = "start ./server/backServer.exe"
runExec(cmdStr)
function runExec(cmdStr){
serverProcess = require('child_process').exec(cmdStr,{})
// 启动成功的输出
serverProcess.stdout.on("data",function(data){
console.log("启动服务器成功! stdout:" + data)
})
// 发生错误的输出
serverProcess.stderr.on("data",function(data){
console.log("stderr:" + data)
})
// 退出后的输出
serverProcess.on("close",function(code){
console.log("out code:" + code)
})
}
}
2. 服务端文件
3. 效果
二、直接使用exe文件名启动服务
1. 使用 exec 命令启动后台服务
代码如下(示例):
let serverProcess=null;
function startServer(){
// 启动后台服务的命令
let cmdStr = "backServer.exe"
// 启动路径
let cmdPath = "./server"
// 区分测试环境与生产环境
// let cmdPath = isDevelopment? "./server":"./resuorces/server"
runExec(cmdStr)
function runExec(cmdStr){
serverProcess = require('child_process').exec(cmdStr,{cwd:cmdPath})
// 启动成功的输出
serverProcess.stdout.on("data",function(data){
console.log("启动服务器成功! stdout:" + data)
})
// 发生错误的输出
serverProcess.stderr.on("data",function(data){
console.log("stderr:" + data)
})
// 退出后的输出
serverProcess.on("close",function(code){
console.log("out code:" + code)
})
}
}
2 . 使用 spawn 命令启动后台服务
推荐使用spawn命令
let serverProcess=null;
function startServer(){
// 启动后台服务的命令
let cmdStr = "backServer.exe"
// 启动路径
let cmdPath = "./server"
// 区分测试环境与生产环境
// let cmdPath = isDevelopment? "./server":"./resuorces/server"
runExec(cmdStr)
function runExec(cmdStr){
// 在启动后台服务前闲检测关闭一遍后台服务,防止开启多个后台服务
stopServer();
serverProcess = require('child_process').spawn(cmdStr,{cwd:cmdPath})
// 启动成功的输出
serverProcess.stdout.on("data",function(data){
console.log("启动服务器成功! stdout:" + data)
})
// 发生错误的输出
serverProcess.stderr.on("data",function(data){
console.log("stderr:" + data)
})
// 退出后的输出
serverProcess.on("close",function(code){
console.log("out code:" + code)
})
}
}
3 . 通过命令行关闭后台服务
// 关闭后台服务
function stopServer(){
const kill = require("tree-kill")
if(serverProcess){
logger.info("kill server process , serverProcess.pid-->",serverProcess.pid);
kill(serverProcess.pid,"SIGTERM",function(){
serverProcess = null;
logger.info("后台服务已关闭...")
})
}
}