windows 下 node-gyp 的环境配置

8,051 阅读2分钟

前言

在通过 node-gyp 打包 C++ 集成的 node 插件时,遇到了挺多坑点,网上大部分资料都是针对低版本的 node-gyp 进行处理,时效性较差,因此通过书写文章的形式整理自己踩过的坑点。

node-gyp 是什么?

node-gyp 是一个可以编译 node 插件的工具,在使用 node-gyp 前需要安装 python 环境和 C++ 环境

如何安装

1 安装 windows-build-tools

查阅了网上大部分文章,windows-build-tools 这个 npm 包可以帮助我们一键安装 node-gyp 所需要的 python 环境和 C++ 环境。

但 windows-build-tools npm 包已经不维护了。如需要继续使用的话,我们可以将 python2.7 替换成 python3, 在安装 C++ 环境

具体步骤如下:
  • 1 采用管理员模式开启 CMD 或者 powerShell, 安装 windows-build-tools

    npm install --global --production windows-build-tools

  • 2 如果遇到了 successfully installed python 卡主

    20210523095213711.png

    不要慌,疑似 window-build-tools 自带的bug,可查看相关issue链接

    image.png

    解决方案:

    • 1 打开资源管理器(左下角搜索-资源管理器或者直接window+E),在路径处输入%temp% image.png

    • 2 在%temp%文件夹中找到最新的文件名类似于dd_installer_20211126145101.log的文件,查看此文件,确保日志中输出了Closing the installer with exit code 0

      image.png

    • 3 在%temp%目录下创建一个名为dd_client_.log的文件

      image.png

    • 4 编辑创建的文件,加入一行Closing installer. Return code: 3010.然后保存。

      image.png

    • 5 回到执行安装命令的窗口,会继续安装windows-build-tools的步骤

      image.png

2 安装 python3

网上部分文章说 node-gyp 应该用 python 版本 2.7 版本,可能是因为时效性的问题,目前 python2 已经不在维护了,并且 node-gyp 在官方文档上也说明应该用 python3。

  • 1 在 C 盘 Users 目录下的 .windows-build-tools, 找到python相关的 msi 文件, 打开并卸载掉 python2, 因为 node-gyp@9 版本对应是 python3 的版本

    image.png

    image.png

  • 2 安装 python3 环境并配置环境变量 传送门

3 安装 C++ 环境

  • 点击 vs_BuildTools.exe

    image.png

  • 安装环境的方式有 2 种:

    • 方案1: Install Visual C++ Build Environment Visual Studio Build Tools
    • 方案2: 使用 visual studio community 安装c++桌面开发工具(我是用的这种方式)

    image.png

4 安装 node-gyp

npm install -g node-gyp

常见问题的解决

1 python not found - had to configure it manually in npm

image.png

如果小伙伴已经安装了 python, 查看版本是否是 python3 的版本并且设置了环境变量

image.png

2 如何打包 C++ 集成的插件

npm config set msvs_version 2017

node-gyp configure

node-gyp build

参考文档

  1. Windows下node-gyp查找VS安装路径简单解析
  2. node-gyp官方文档
  3. windows-build-tools npm文档
  4. npm安装windows-build-tools时卡在Successfully installed Python 2.7
  5. 安装 C++ 环境
  6. python not found - had to configure it manually in npm