最近刚刚接触到Electron,在github上下载了quick-start例程,由于需要对win32底层库进行操作,查找资料后了解到需要安装ffi,于是开始了痛苦的填坑经历。
先总结:
- node 使用 v10.15.3,用 v12.0.0安装 ffi 失败
- Electron 使用 v4.1.5 ,用 v5.0.0 执行 rebuild 时失败
- 中间遇到 compiled against a different Node.js version using NODE_MODULE_VERSION 64. This version of Node.js requires NODE_MODULE_VERSION 69 的问题,在使用上面两条里提到的版本后,执行
.\node_modules\.bin\electron-rebuild.cmd ,解决
具体过程
- github上下载Electron-quick-start
进入工作目录git clone https://github.com/electron/electron-quick-start cd electron-quick-start npm install npm start
初次启动测试成功 -
安装 ffi
npm install --save--dev electron-rebuild npm install ffi
gyp ERR! build error gyp ERR! stack Error: `C:\Program Files (x86)\Microsoft Visual Studio\2017\BuildTools\MSBuild\15.0\Bin\MSBuild.exe` failed with exit code: 1 gyp ERR! stack at ChildProcess.onExit (C:\Program Files\nodejs\node_modules\npm\node_modules\node-gyp\lib\build.js:262:23) gyp ERR! stack at ChildProcess.emit (events.js:196:13) gyp ERR! stack at Process.ChildProcess._handle.onexit (internal/child_process.js:256:12) gyp ERR! System Windows_NT 10.0.17134 gyp ERR! command "C:\\Program Files\\nodejs\\node.exe" "C:\\Program Files\\nodejs\\node_modules\\npm\\node_modules\\node-gyp\\bin\\node-gyp.js" "rebuild" gyp ERR! cwd E:\Coding\Electron\electron-quick-start\node_modules\ref gyp ERR! node -v v12.0.0 gyp ERR! node-gyp -v v3.8.0 gyp ERR! not ok npm ERR! code ELIFECYCLE npm ERR! errno 1 npm ERR! ref@1.3.5 install: `node-gyp rebuild` npm ERR! Exit status 1 npm ERR! npm ERR! Failed at the ref@1.3.5 install script. npm ERR! This is probably not a problem with npm. There is likely additional logging output above. npm ERR! A complete log of this run can be found in: npm ERR! C:\Users\40093\AppData\Roaming\npm-cache\_logs\2019-04-30T08_15_29_152Z-debug.log
各种查资料,都不成功,最后发现,node用的是最新版 v12.0.0的,换回v10.15.3就可以了
-
重新编译
又是一片红.\node_modules\.bin\electron-rebuild.cmd
gyp ERR! build error gyp ERR! stack Error: `C:\Program Files (x86)\Microsoft Visual Studio\2017\BuildTools\MSBuild\15.0\Bin\MSBuild.exe` failed with exit code: 1 gyp ERR! stack at ChildProcess.onExit (E:\Coding\Electron\electron-quick-start\node_modules\node-gyp\lib\build.js:262:23) gyp ERR! stack at ChildProcess.emit (events.js:189:13) gyp ERR! stack at Process.ChildProcess._handle.onexit (internal/child_process.js:248:12) gyp ERR! System Windows_NT 10.0.17134 gyp ERR! command "C:\\Program Files\\nodejs\\node.exe" "E:\\Coding\\Electron\\electron-quick-start\\node_modules\\node-gyp\\bin\\node-gyp.js" "rebuild" "--target=5.0.0" "--arch=x64" "--dist-url=https://atom.io/download/electron" "--build-from-source" gyp ERR! cwd E:\Coding\Electron\electron-quick-start\node_modules\ffi gyp ERR! node -v v10.15.3 gyp ERR! node-gyp -v v3.8.0 gyp ERR! not ok Failed with exit code: 1 at SafeSubscriber._error (E:\Coding\Electron\electron-quick-start\node_modules\spawn-rx\lib\src\index.js:267:84) at SafeSubscriber.__tryOrUnsub (E:\Coding\Electron\electron-quick-start\node_modules\rxjs\internal\Subscriber.js:205:16) at SafeSubscriber.error (E:\Coding\Electron\electron-quick-start\node_modules\rxjs\internal\Subscriber.js:156:26) at Subscriber._error (E:\Coding\Electron\electron-quick-start\node_modules\rxjs\internal\Subscriber.js:92:26) at Subscriber.error (E:\Coding\Electron\electron-quick-start\node_modules\rxjs\internal\Subscriber.js:72:18) at MapSubscriber.Subscriber._error (E:\Coding\Electron\electron-quick-start\node_modules\rxjs\internal\Subscriber.js:92:26) at MapSubscriber.Subscriber.error (E:\Coding\Electron\electron-quick-start\node_modules\rxjs\internal\Subscriber.js:72:18) at SafeSubscriber._next (E:\Coding\Electron\electron-quick-start\node_modules\spawn-rx\lib\src\index.js:242:65) at SafeSubscriber.__tryOrUnsub (E:\Coding\Electron\electron-quick-start\node_modules\rxjs\internal\Subscriber.js:205:16) at SafeSubscriber.next (E:\Coding\Electron\electron-quick-start\node_modules\rxjs\internal\Subscriber.js:143:22)
-
安装ref
同样错误
npm install ref
-
将electron版本改为 v4.1.5
重新执行上面步骤,成功,执行
npm start
-
在main.js中加上 const ffi = require('ffi'),依然成功运行,证明环境已配置成功
const ffi = require('ffi')