Electron子進程開啓Koa微服務
1、配置 Server
打包位置
// vue.config.js pluginOptions: { electronBuilder: { builderOptions: { //... // 匹配server中的所有文件夾和文件 extraResources: ['server/**/**'] // 指定打包 Server 到 Resource 文件夾中。 } } }
會將 server
文件夾打包到 Resources
文件夾中。爲什麼不打包大 app.asar
中呢?因爲 .asar
文件是隻讀的,無法進行數據庫的寫入。
2、配置webpack
// vue.config.js configureWebpack: { externals: ['pg', 'sqlite3', 'tedious', 'pg-hstore'] }
3、創建 Electron 子進程
function createServerProcess() { if (!isDevelopment) { // 生產環境 serverProcess = fork('../server/index.js', [], { cwd: path.join(__dirname, '../server') }) } else { // 開發環境 serverProcess = fork(require.resolve('../server/index.js')) serverProcess.on('close', code => { console.log('子線程已經退出', code) }) } }
程序退出時,需要終止子進程 process.kill(serverProcess.pid)
至此:Mac可以啓動服務和訪問數據庫
問題
windows 下無法啓動服務 && Please install sqlite3
錯誤
-
在 Sequelize 中指定數據庫的類型,默認有時無法讀取到。
-
執行
cnpm i
命令安裝依賴包,會自動對sqlite3進行編譯,node_module/sqlite3/lib/binding
中可以看到文件。或者執行命令npm run postinstall
(管理員身份執行,npm i
會默認執行該命令) -
或者手動編譯
npm rebuild
進行手動編譯。 -
執行命令編譯爲 electron匹配的 sqlite3 文件。
node-gyp rebuild --target=6.1.0 --arch=x64 --target_platform=win32 --dist-url=https://npm.taobao.org/mirrors/node/ --module_name=node_sqlite3 --module_path=../lib/binding/electron-v6.1-win32-x64
- target 爲 electron 版本,或者 node 版本
- –arch 架構;–traget_platform: 目標系統
- –dist-url: Header 文件下載地址
注:參考另一篇文中: Koa使用Sqlite3和Sequelize