简介
这是一个基于electron的串口工具桌面应用,因为我在网上走了很多坑,都不成功,终于找到对的方法,编译成功了,这里讲下我的编译成功的方法。希望能够帮到大家
完整demo在demo目录中,包括编译好的node_modules,所以有点大
github地址: https://github.com/PowerDos/serialport_electron_start
实现过程
装备工作
安装python 2.7
这里需要安装python 2.7的环境,记得是2.7,3的话是不行的。这里就不再展开python的安装过程,执行下载安装即可。
安装electron
对于可以翻墙的同学用这个
npm i electron -g
由于下载过慢,所以我采用淘宝的镜像镜像安装cnpm,大家可以自行安装下cnpm,这里就不展开解释了 下面的操作都采用cnpm
cnpm i electron -g
安装electron-prebuilt
cnpm install -g electron-prebuilt
开始
安装官方的例子
官方文档的例子我就不在这里展开解释了,可以查看官方文档 https://electron.org.cn/doc/tutorial/quick-start.html
下载demo
git clone https://github.com/electron/electron-quick-start.git
安装模块
cnpm install
安装serialport
cnpm install --save serialport
安装electron-rebuild, 因为serialport是根据系统环境编译的,当我们安装时,我们编译的成的是系统环境的serialport,所以我们需要重新编译成eletron的环境,所以我们需要electron-rebuild
cnpm install --save-dev electron-rebuild
重新编译, 因为我当前版本的electron是1.7.10的,所以我们重新把模块编译成适应1.7.10的, 这里记得要根据你的electron版本编译
./node_modules/.bin/electron-rebuild -v 1.7.10
demo
在index.html写我们的demo
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Hello World!</title>
</head>
<body>
<h1>Hello World!</h1>
<!-- All of the Node.js APIs are available in this renderer process. -->
We are using Node.js <script>document.write(process.versions.node)</script>,
Chromium <script>document.write(process.versions.chrome)</script>,
and Electron <script>document.write(process.versions.electron)</script>.
<script>
// You can also require other files to run in this process
require('./renderer.js')
var serialport = require('serialport');
serialport.list(function(err, ports) {
console.log(ports);
});
</script>
</body>
</html>
运行效果
写了完整的小demo
效果
有什么需要改进的,可以直接提出来
electron-prebuilt 已经不推荐使用了。 我作了一个企业环境连接Oracle数据库的应用,也是用的electron,需要编译oarcle的oci库,踩到的坑主要有两个: 1、electron的版本会影响编译oci的成功率,npm上安装内置的总会落后于nodejs的版本,这个我还提过issue,对方表示解决不了,等待npm里面的更新。更新成一致的,或者落后不超过1版本的,均可以编译成功;串口包的编译,我也看过有哥们提issue,不会是你把? 2、oci的环境变量,必须设置,特别是在本机有多个oci版本的时候,必须指定当前编译oci库的版本同环境变量中的版本一直,否则连接Oracle会失败。
其他的问题都好解决。Electron最大的好处是可以用诸多的web页面模板,很漂亮,程序员不用费心思再去做界面。web页面我用的vue+elem。还有个好处是跨平台。当然了,不同的平台还是需要去相应平台下编译打包。并不通用。
我开发的这个应用的前三个版本是用Java Swing 写的GUI程序,后续维护的时候彻底抛弃了,拥抱nodejs。
@anuxs 谢谢指导,因为入坑不久,很多东西都不清楚,electron-prebuilt,不推荐使用,那么现在是用node-gyp还是node-pre-gyp。