介绍
Electron安装c addon 编写的modules时经常会遇到各种问题,主要是electron、nodejs版本问题,一定要把安装后的c addon在重新编译成适合当前electron和nodejs的包。
我的环境是window 10 x64位+nodejs 10.1 x64位+ electron 4.0.5+angular 7
这篇主要介绍安装opencv4nodejs的问题
安装配置
前提环境要配置好2015 build tools和python2.7,如果没有,建议执行npm install --global windows-build-tools,会自动安装,但是安装后python2.7不会自动配置环境变更,需要到添加/删除里找到它,Add python.exe to Path安装,就会自动加到环境变量path里,进行更改如下图:
2015 build tools和python2.7(注意:只支持python2.7版本)准备好就可以进行opencv4nodejs的安装了
opencv4nodejs 官方提示有两种安装:
-
一个种是自动安装,自动安装需要安装cmake,并配置系统环境变量cmake,有关cmake安装配置请查相关文章;
执行命令:npm install opencv4nodejs --save
会下载OpenCV 3.4.3和OpenCV contrib 3.4.3 ,时间比较慢长,完成后在electron项目的package.josn里加上
“electron-rebuild”: “electron-rebuild -w opencv4nodejs”
然后执行
npm run electron-rebuild这种安装后,我测试的用electron-package打包后可以用,但是包太大,超过1.5GB; 但是用nsis打包会很慢,我的电脑要 半小时左右,并且找不到opencv,electron运行起来是白屏,什么也没有,所有我推建第二种安装。
-
第二种是手动安装,如官方所述:
单独设置OpenCV将要求您设置环境变量:OPENCV4NODEJS_DISABLE_AUTOBUILD = 1。
你可以安装任何OpenCV 3+ 版本(注意,这将没有contrib)如需要contrib,则要下载和opecv对应的版本。
(有些朋友下载完后不会cmake编译或不能用,可以在这里下载opencv3.4.3+contrib3.4.3)
如果您选择自己设置OpenCV,则必须在安装opencv4nodejs之前设置以下环境变量:OPENCV_INCLUDE_DIR指向包含头文件夹opencv的目录和包含头文件的opencv2 OPENCV_LIB_DIR指向包含OpenCV .lib文件的lib目录 您还需要将OpenCV二进制文件添加到系统路径: 添加一个环境变量OPENCV_BIN_DIR,指向包含OpenCV .dll文件的二进制目录 附加;%OPENCV_BIN_DIR%;到系统路径变量 ***注意:在更改环境后重新启动当前的控制台会话。***
用nsis打包后,setup.exe文件大概200MB左右,也可以正常运行起来并调用opencv4nodejs。
问题及解决方法
- 无法找到opencv4nodejs.node,
解决方法: 在electron项目的package.josn里加上在electron项目的package.josn里加上
“electron-rebuild”: “electron-rebuild -w opencv4nodejs”
然后执行
npm run electron-rebuild - 出现NODE_VERSION_NUMMBER不一致错,如下:
Error: The module '/Users/august/projects/node_modules/opencv4nodejs/build/Release/opencv4nodejs.node'
was compiled against a different Node.js version using
NODE_MODULE_VERSION 54. This version of Node.js requires
NODE_MODULE_VERSION 57. Please try re-compiling or re-installing
the module (for instance, using `npm rebuild` or `npm install`).
at Object.Module._extensions..node (module.js:598:18)<br>
at Module.load (module.js:503:32)<br>
at tryModuleLoad (module.js:466:12)<br>
at Function.Module._load (module.js:458:3)<br>
at Module.require (module.js:513:17)<br>
at require (internal/module.js:11:18)<br>
at Object.<anonymous> (/Users/august/projects/node_modules/macos-alias/lib/create.js:7:13)<br>
at Module._compile (module.js:569:30)<br>
at Object.Module._extensions..js (module.js:580:10)<br>
at Module.load (module.js:503:32)<br>
方法1:
./node_modules/.bin/electron-rebuild 不成功
方法2:
npm rebuild 不成功
解决方法:
node-gyp rebuild --target=4.0.5 --arch=x64 --dist-url=https://atom.io/download/electron --msvs_version=2015 成功
根据自己的electron版本号和系统位数,改成自己对应的版本;target是electron版本号,arch是系统位数。