Electron中使用Node-ffi调用DLL
https://www.psvmc.cn/article/2019-10-20-electron-dll.html
0.我的node是node-v10.16.3-x64比较稳定
https://npm.taobao.org/mirrors/node/v10.16.3/
下选 node-v10.16.3-x64.msi
一、添加了node-ffi
二、打包npm run build报错的
记录 electron-vue 通过node ffi调用dll文件,node-gyp配置的坑
安装网上大部分安装electron-vue的步骤来,npm run dev 可以成功,npm run build打死也不成功,这个可是困扰了楼主三天三夜啊。。,错误见下图
乍一看就是node-gyp的锅,后来发现确实也是他的锅,查看了网上很多解决的办法,譬如:
npm config set npm_config_node_gyp=C:\Program Files(x86)\nodejs\node_modules\npm\node_modules\node-gyp\bin\node-gyp.js
npm config set NODE_TLS_REJECT_UNAUTHORIZED=0
npm config set msvs_version 2017
等等。。。还是不成功,如果有同样错误的童鞋可以一步一步试下来,说不定对你有用呢
我的终极解决办法:
(1)在项目根目录下新建.npmrc文件
Electron 的版本,注意要去node_modules文件夹下,看electron安装的实际版本,光看package.json下面有时候会不准确。
set npm config--target=2.0.18
Electron 的系统架构, 值为 ia32 或者 x64。
set npm config--arch=x64
下载 Electron 的 headers。
set npm config--disturl=https://npm.taobao.org/mirrors/atom/
告诉 node-pre-gyp 我们是在为 Electron 生成模块。set npm config–runtime=electron
(2)找到项目目录下的node_modules文件夹,找到 命令行定位分别到ref和ffi两个文件夹下,执行以下命令
node-gyp rebuild --target=2.0.4 --arch=x64 --dist-url=https://npm.taobao.org/mirrors/atom/
hid的文件夹
node_modules\node-hid下添加 然后运行
node-gyp rebuild --target=2.0.4 --arch=x64 --dist-url=https://atom.io/download/atom-shell
,看到如下已完成代码生成字样即为成功。
(3)删除C:\Users\用户名.node_gyp 文件夹以及C:\Users\用户名.npmrc文件
(4)删除 C:\Users\用户名.electron-gyp
iojs.lib : fatal error LNK1106
c:\users\surou\desktop\scatterdesktop\node_modules\keccak\src\libkeccak\KeccakSponge.h : warning C4819: ���ļ����������ڵ�ǰ����ҳ(936)�б�ʾ���ַ����뽫���ļ�����Ϊ Unicode ��ʽ�Է�ֹ���ݶ�ʧ (����Դ�ļ� ..\src\libkeccak\KeccakSponge.c) [C:\Users\Surou\Desktop\ScatterDesktop\node_modules\keccak\build\keccak.vcxproj]
C:\Users\Surou\.electron-gyp\.node-gyp\iojs-2.0.11\x64\iojs.lib : fatal error LNK1106: �ļ���Ч���������: �����ҵ� 0x29851C [C:\Users\Surou\Desktop\ScatterDesktop\node_modules\keccak\build\keccak.vcxproj]
gyp ERR! build error
gyp ERR! stack Error: `C:\Program Files (x86)\MSBuild\14.0\bin\msbuild.exe` failed with exit code: 1
gyp ERR! stack at ChildProcess.onExit (C:\Users\Surou\Desktop\ScatterDesktop\node_modules\node-gyp\lib\build.js:262:23)
gyp ERR! stack at ChildProcess.emit (events.js:180:13)
gyp ERR! stack at Process.ChildProcess._handle.onexit (internal/child_process.js:209:12)
gyp ERR! System Windows_NT 10.0.16299
gyp ERR! command "C:\\Program Files\\nodejs\\node.exe" "C:\\Users\\Surou\\Desktop\\ScatterDesktop\\node_modules\\node-gyp\\bin\\node-gyp.js" "rebuild" "--target=2.0.11" "--arch=x64" "--dist-url=https://atom.io/download/electron" "--build-from-source"
gyp ERR! cwd C:\Users\Surou\Desktop\ScatterDesktop\node_modules\keccak
gyp ERR! node -v v9.8.0
gyp ERR! node-gyp -v v3.8.0
解决方案:删除 C:\Users\Surou\.electron-gyp
参考:https://github.com/electron/electron-rebuild/issues/163
app-builder.exe exited with code 1
(5)npm install --save-dev electron-rebuild
在package.json中"scripts"中添加:
"rebuild": "electron-rebuild -d=http://npm.taobao.org/mirrors/atom-shell -v 2.0.4 -m=./"
然后执行: npm run electron-rebuild
rebuild complete字样即为成功。
在运行官网示例的过程中,一个安装包(electron-v1.8.6-darwin-x64.zip)下载特别慢,基本下载不下来。更改npm的安装源到taobao的镜像,也没有效果。
https://npm.taobao.org/mirrors/electron/。
下载完之后放到指定的文件。一般文件得地址在C:\Users\Administrator\AppData\Local\electron\Cache。例如我要下载1.8.4版本的electron,那么找到镜像下得文件然后放到指定文件夹中。
【最好build的时候 开VPN】!!!

