最近项目中,需要用 electron 来启动后台服务,后台服务是一个 exe 程序,目录在 electron 打包后的目录上一层
通过 app 来获取程序的路径
import { app, BrowserWindow } from 'electron'
// 当前的可执行文件所在目录
let appPath = app.getPath('exe')
// 获取上一层的目录 app 是当前目录名称 需要给去掉
let path = appPath.replace(/\\app\\studio.exe/, '')
再通过 node
的 child_process
来调用 cmd
执行
const exec = require('child_process').exec
// 本地需要启动的后台服务名称
let cmdStr = 'server'
let cmdPath = path
let workerProcess
function runExec () {
// 执行命令行,如果命令不需要路径,或就是项目根目录,则不需要cwd参数:
workerProcess = exec(cmdStr, {cwd: cmdPath})
// 不受child_process默认的缓冲区大小的使用方法,没参数也要写上{}:workerProcess = exec(cmdStr, {})
// 打印正常的后台可执行程序输出
workerProcess.stdout.on('data', function (data) {
console.log('stdout: ' + data)
})
// 打印错误的后台可执行程序输出
workerProcess.stderr.on('data', function (data) {
console.log('stderr: ' + data)
})
// 退出之后的输出
workerProcess.on('close', function (code) {
console.log('out code:' + code)
})
}
需要在 electron
的 ready
生命周期中调用
app.on('ready', function(){
runExec()
})
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。