Electron中使用Node-ffi调用DLL以及打包npm run build报错解决方案

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】!!!

在这里插入图片描述
在这里插入图片描述


版权声明:本文为huijiMC原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。