likes
comments
collection
share

electron + oracledb踩坑记录

作者站长头像
站长
· 阅读数 30

开始前

最近接到一个需求,需要在electron客户端直接连接数据建表以及落库操作,环境搭建花费不少时间。

electron + oracledb踩坑记录 由于项目是内网,且node版本为12.16.3,以下一系列操作均在node: 12.16.3版本下进行

以下操作均为windows环境下

如想操作多个node管理,可下载nvm进行node管理 electron + oracledb踩坑记录

外网安装

如果项目在外网中还是比较方便的,可直接下载各种依赖,安装包

一. 安装windows-build-tools npm install –-global windows-build-tools windows-build-tools会帮忙安装python与 visual studio 2017 (C构建环境)

electron + oracledb踩坑记录

我这里报错了,python安装成功,但是vs没安装上,进入这个路径,找到vs_BuildTools应用程序运行,然后安装即可。

electron + oracledb踩坑记录

下面是python 与vs安装成功后截图,电脑左下角点击开始

electron + oracledb踩坑记录 其中visual studio installer 点击运行 进入下图,安装C环境(第一个),有点大【大概4.5G】,安装成功如下

electron + oracledb踩坑记录

二. 安装node-gyp模块 (ps:项目node版本比较低,所以node-gyp版本也选的比较低) npm install –-global node-gyp@3.8.0

三. 安装oracledb【从源码安装】

根据npm上oracledb提示,node12对应的oracledb版本是5.3.0,所以我下载的这个版本

npm install github.com/oracle/node…

electron中不使用npm install oracledb@5.3.0的原因

看下两张图,生成oracledb依赖包。

electron + oracledb踩坑记录

electron + oracledb踩坑记录

oracledb文档地址

四. 下载oracledb客户端【这里下载的basic版】

下载地址:

根据文档,visual studio 2017对应的client版本19_20,下载解压后如下

electron + oracledb踩坑记录

到这里需要的库,以及环境就安装好了。

内网安装【断网】

一. 安装python【下载python-2.7.15.amd64 直接安装即可】

二. 安装visual studio 2017

这个帖子有说如何离线安装vs2017

下载个 electron + oracledb踩坑记录

我只需要c环境,所以直接执行,找到vs_BuildTools打开命令行

vs_buildtools.exe --layout f:\vs2017layout --add Microsoft.VisualStudio.Workload.VCTools --includeOptional --lang zh-CN

这里会在我的f盘生成一个vs2017layout文件,进入vs2017layout文件夹

进入certificates,将三个证书 =》 依次双击,然后安装证书,一直无脑下一步,最后显示导入成功。确定

electron + oracledb踩坑记录

然后运行这个

electron + oracledb踩坑记录 安装中

electron + oracledb踩坑记录

可能等待会有点久,右边可选其实选第一个就行了,总大小大概小3G,下图是安装成功后,但是和安装时显示差不多

electron + oracledb踩坑记录

安装成功后

npm config set msvs_version 2017

三:安装node-gyp

这个帖子取:步骤6安装node-gyp,按这里操作就行,其中node版本换成我这里的12.16.3,然后拷贝了一下cmd文件代码,这样内网就可以使用命令行node-gyp -v 直接查看版本了。

这个帖子需要设置node-header,这里按照操作后,我在c盘建了个文件夹node-headers,将操作后得到的文件放了进去

打开cmd执行: npm config set nodedir 上面的文件路径   => 比如npm config set nodedir C:\node-headers\12.16.3

设置这个header还有一种更快的方式,不用看帖子二,在外网直接直接

npm install -g node-gyp@3.8.0

后找到路径C:\Users\用户名 这个下面会有个.node-gyp 下面会有12.16.3(对应node版本的header, 直接复制到内网任意位置)然后 打开cmd执行: npm config set nodedir 上面的文件路径

到这里,内网环境就结束了

PS重要!!!: 切记检查下项目中package.json中dependencies中是否添加

"oracledb": "github.com/oracle/node…"

否则electron-builder打包的时候不会将oracledb打包进去,客户端会报错Cannot find module ‘oracledb’

oracledb使用

使用之前:将client端引用配好

一: 根目录下创建extraResources文件夹,将客户端basic instantclient_19_20文件夹放入

二:electron-build配置文件中

electron + oracledb踩坑记录

三:主进程中查找客户端basic路径

electron + oracledb踩坑记录

因为需要打包成客户端,客户可不会下载这个oracle客户端呐,就没设置环境变量PATH,也尝试过放到node_modules下oracledb/build/Release下,打包成客户端没成功,所以还是使用的上图中这种引用方式。 注:经过使用发现,libDir必须是完整的路径,打包成app.asar中的引用是不行的,所以要去app.asar的上一层找步骤二中拷贝过来的客户端basic文件夹。

正式使用

oracledb调用就简单了,只要oracledb的逻辑要放到主进程中执行,或者主进程中使用child-process也可以,将oracledb调用放到child-process中,渲染进程中的node环境不全,不可以调用oracledb,会报错。【oracledb对node环境比较严格】

调用逻辑放在主进程,然后拿到读库后的数据通信给渲染进程即可 如下一个简单调用:敏感字段部分就不给看了

主进程中:

electron + oracledb踩坑记录

渲染进程中:

electron + oracledb踩坑记录 页面显示:

electron + oracledb踩坑记录

控制台打印:

electron + oracledb踩坑记录

总结

oracledb相关博客资料比较少的,我司这项目electron版本低,node版本低,还是内网, 结合oracledb后更是一步一坑,想想都心累,这里做下踩坑记录,后续再遇到过来查看一下,希望大家少踩坑。告辞!

转载自:https://juejin.cn/post/7280000794405634088
评论
请登录