node-ffi從入門到放棄(安裝篇)


 

node-ffi是什么

node-ffi是一個node用來調用dll的庫,當然還有node-ffi-napi,\`食用\`指南暫時先不貼出來,我們今天先來安裝node-ffi,同時對一些常見問題進行整理

windows安裝

node-gyp安裝

安裝node-ffi前需要先安裝node-gyp,這是一個極容易勸退的過程,下面請跟我一起走進這個會被逼瘋的世界:

安裝windows-build-tools

傳送門

yarn global add windows-build-tools // or npm i -g windows-build-tools

安裝完成后,打開命令行查看python版本,看看版本號是否為2.7.15,
如果版本號不是2.7.xx的話,可以查看環境變量或則用戶變量,將path下面的python版本提到靠前的位置或者加入
image.png
如果你不想在環境變量或則用戶變量中設置,可以使用

npm config set PYTHON %PYTHON2%
// or
yarn config set PYTHON %PYTHON2%
不推薦同時使用 yarnnpm, 會因為路徑問題造成很多沒必要的麻煩

這個樣子你就可以非常開心的在不改變自己python版本的情況下使用node-ffi,但是這種方法容易讓你后期忘記自己配置了那些npm或者yarn配置導致一些未知的bug,當我說到這里,你是否應該npm config list來查看下自己配置是否有需要刪除的呢?!

安裝node-gyp

傳送門
在安裝前我們先將msvs_version的版本設置為2017

npm config set msvs_version 2017
// or yarn config set msvs_version 2017

然后我們就可以開心的安裝node-gyp

npm i -g node-gyp // or yarn global add node-gyp

node-gyp編譯包下載

node-gyp install --dist-url=https://npm.taobao.org/mirrors/node

當這些准備工作都做好之后,我們就可以請我們的主角node-ffi上場了

安裝node-ffi

npm i ffi --save // or yarn add ffi --save

一般情況下node-ffi是需要和ref放在一起食用的

electron 安裝 node-ffi

electron安裝node-ffi需要編譯后才可以使用,所以需要安裝electron-rebuild

npm i electron-rebuild
// or yarn add electron-rebuild

最開始使用cnpm經常會出現各種各樣的問題,最常見的問題就是不在./node_modules/.bin文件下創建electron-rebuild.bat,如果你編譯node-ffi有問題的話,你可以嘗試以下方法

> cd node_modules/ffi
> node-gyp rebuild --runtime=electron --arch=ia32 --target=2.0.18 --dist-url=https://npm.taobao.org/mirrors/atom-shell
參數 說明
arch 編譯為32位還是64位
target electron版本號 已node_modules/electron/package.json中的版本號為准
dist-url 下載源

更多配置
當然還是推薦使用node-ffi-napi畢竟兼容到node12,但是我到目前還沒有安裝成功過,而且也沒找到原因,所以我不推薦


分割線


快速導讀

> npm i -g windows-build-tools // 下載windows-build-tools > npm config set msvs_version 2017 // 設置msvs_version,同時可以使用npm config list 查看python是否指向2.7版本 > npm i -g node-gyp // 下載node-gyp > npm i ffi --save // electron 添加 > npm i electron-rebuild -D > electron-rebuild

問題歸納

node.lib : fatal error LNK1106: 文件無效或磁盤已滿

刪除C:\\Users\\xxxx\\AppData\\Local\\node-gyp文件夾
然后運行node-gyp rebuild

 
gyp info it worked if it ends with ok gyp info using node-gyp@7.0.0 gyp info using node@12.13.0 | win32 | x64 gyp info find Python using Python version 2.7.17 found at "C:\Python27\python.ex e" gyp http GET https://nodejs.org/download/release/v12.13.0/node-v12.13.0-headers. tar.gz gyp http 200 https://nodejs.org/download/release/v12.13.0/node-v12.13.0-headers. tar.gz gyp http GET https://nodejs.org/download/release/v12.13.0/SHASUMS256.txt gyp http GET https://nodejs.org/download/release/v12.13.0/win-arm64/node.lib gyp http GET https://nodejs.org/download/release/v12.13.0/win-x64/node.lib gyp http GET https://nodejs.org/download/release/v12.13.0/win-x86/node.lib gyp http 200 https://nodejs.org/download/release/v12.13.0/SHASUMS256.txt gyp http 404 https://nodejs.org/download/release/v12.13.0/win-arm64/node.lib gyp http 200 https://nodejs.org/download/release/v12.13.0/win-x86/node.lib gyp http 200 https://nodejs.org/download/release/v12.13.0/win-x64/node.lib

然后再次安裝ffiok


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM