关于electron使用oracledb
报错内容:
Error: NJS-045: cannot load a node-oracledb binary for Node.js 12.xx.x (win32 x64)
…/dist_electron\node_modules\oracledb\build\Release\oracledb-5.0.0-win32-x64.node,
…/dist_electron\node_modules\oracledb\build\Release\oracledb.node
关于这个问题up主找了2天,各种方法试了之后终于回到了报错信息上,原来是oracledb的包中,引用oracledb依赖的路径有点问题。
我的环境
环境 vue-cli4 + vue-cli-plugin-electron-builder
启动 yarn electron:serve
解决方法
看了错误定位的oracledb包,发现个issue链接
原来这个问题已经困扰了这么多人,因为我是多了一级,所以对oracledb/lib/oracledb.js文件做了修改
最后两行的./node_modules/
改成 ../node_modules/
// node_modules/oracledb/lib/oracledb.js
const binaryLocations = [
'../' + nodbUtil.RELEASE_DIR + '/' + nodbUtil.BINARY_FILE, // pre-built binary
'../' + nodbUtil.RELEASE_DIR + '/' + 'oracledb.node', // binary built from source
'../build/Debug/oracledb.node', // debug binary
// For Webpack. A Webpack copy plugin is still needed to copy 'node_modules/oracledb/build/' to the output directory
// See https://github.com/oracle/node-oracledb/issues/1156
'../node_modules/oracledb/' + nodbUtil.RELEASE_DIR + '/' + nodbUtil.BINARY_FILE,
'../node_modules/oracledb/' + nodbUtil.RELEASE_DIR + '/' + 'oracledb.node'
];
最后:欢迎大家来讨论Electron碰到的问题