最近項目中,須要用 electron 來啓動後臺服務,後臺服務是一個 exe 程序,目錄在 electron 打包後的目錄上一層node
經過 app 來獲取程序的路徑app
import { app, BrowserWindow } from 'electron' // 當前的可執行文件所在目錄 let appPath = app.getPath('exe') // 獲取上一層的目錄 app 是當前目錄名稱 須要給去掉 let path = appPath.replace(/\\app\\studio.exe/, '')
再經過 node
的 child_process
來調用 cmd
執行electron
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
生命週期中調用ui
app.on('ready', function(){ runExec() })