• nodeffi从入门到放弃(安装篇)


     

    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

  • 相关阅读:
    AUDIT审计的一些使用
    HOW TO PERFORM BLOCK MEDIA RECOVERY (BMR) WHEN BACKUPS ARE NOT TAKEN BY RMAN. (Doc ID 342972.1)
    使用BBED理解和修改Oracle数据块
    Using Class of Secure Transport (COST) to Restrict Instance Registration in Oracle RAC [ID 1340831.1]
    调试利器GDB概念
    第4章 思科IOS
    第3章 ip地址和子网划分
    第2章 TCPIP
    2020年阅读过的黑客资源推荐篇
    第1章 计算机网络
  • 原文地址:https://www.cnblogs.com/onesea/p/15879795.html
Copyright © 2020-2023  润新知