Electron子进程开启Koa微服务

栏目: IT技术 · 发布时间: 4年前

内容简介:会将程序退出时,需要终止子进程

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 错误

  1. 在 Sequelize 中指定数据库的类型,默认有时无法读取到。

  2. 执行 cnpm i 命令安装依赖包,会自动对 sqlite 3进行编译, node_module/sqlite3/lib/binding 中可以看到文件。或者执行命令 npm run postinstall (管理员身份执行, npm i 会默认执行该命令)

  3. 或者手动编译 npm rebuild 进行手动编译。

  4. 执行命令编译为 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
  1. target 为 electron 版本,或者 node 版本
  2. –arch 架构;–traget_platform: 目标系统
  3. –dist-url: Header 文件下载地址

注:参考另一篇文中: Koa使用Sqlite3和Sequelize


以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持 码农网

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

人人都是架构师:分布式系统架构落地与瓶颈突破

人人都是架构师:分布式系统架构落地与瓶颈突破

高翔龙 / 电子工业出版社 / 2017-5 / 69

《人人都是架构师:分布式系统架构落地与瓶颈突破》并没有过多渲染系统架构的理论知识,而是切切实实站在开发一线角度,为各位读者诠释了大型网站在架构演变过程中出现一系列技术难题时的解决方案。《人人都是架构师:分布式系统架构落地与瓶颈突破》首先从分布式服务案例开始介绍,重点为大家讲解了大规模服务化场景下企业应该如何实施服务治理;然后在大流量限流/消峰案例中,笔者为大家讲解了应该如何有效地对流量实施管制,避......一起来看看 《人人都是架构师:分布式系统架构落地与瓶颈突破》 这本书的介绍吧!

CSS 压缩/解压工具
CSS 压缩/解压工具

在线压缩/解压 CSS 代码

Markdown 在线编辑器
Markdown 在线编辑器

Markdown 在线编辑器