Electron安装c addon问题总结:一 、opencv4nodejs安装配置及问题总结

Electron安装c addon问题总结:一 、opencv4nodejs安装配置及问题总结

  • 介绍
    • 安装配置
    • 问题及解决方法

介绍

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里,进行更改如下图:
Electron安装c addon问题总结:一 、opencv4nodejs安装配置及问题总结_第1张图片
2015 build tools和python2.7(注意:只支持python2.7版本)准备好就可以进行opencv4nodejs的安装了
opencv4nodejs 官方提示有两种安装:

  1. 一个种是自动安装,自动安装需要安装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运行起来是白屏,什么也没有,所有我推建第二种安装。

  2. 第二种是手动安装,如官方所述:
    单独设置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。

问题及解决方法

  1. 无法找到opencv4nodejs.node,
    解决方法: 在electron项目的package.josn里加上在electron项目的package.josn里加上
    “electron-rebuild”: “electron-rebuild -w opencv4nodejs”
    然后执行
    npm run electron-rebuild
  2. 出现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是系统位数。

你可能感兴趣的:(Node.js,Electron,AngularJs)