node-gyp多VS环境安装rebuild出错解决

一、解决过程

Windows安装多个VS,使用node-gyp报错的解决方法

问题描述:
电脑上安装了vs2015,并且安装了node10.13.0,使用node-gyp正常,后来又安装了vs2019,使用npm install需要node-gyp rebuild的时候,就报错了。

部分报错内容:

npm ERR! code 7
npm ERR! path D:\study\qianduan_study\Node.js_wanghongyuan\node.js_project\07_Buffer的使用\node_modules\sharp
npm ERR! command failed
npm ERR! command C:\WINDOWS\system32\cmd.exe /d /s /c node-gyp rebuild
npm ERR! gyp info it worked if it ends with ok
npm ERR! gyp info using node-gyp@7.1.2
npm ERR! gyp info using node@15.6.0 | win32 | x64
npm ERR! gyp info find Python using Python version 3.9.1 found at "C:\Python39\python.exe"
npm ERR! gyp http GET https://nodejs.org/download/release/v15.6.0/node-v15.6.0-headers.tar.gz
npm ERR! gyp http 200 https://nodejs.org/download/release/v15.6.0/node-v15.6.0-headers.tar.gz
npm ERR! gyp http GET https://nodejs.org/download/release/v15.6.0/SHASUMS256.txt
npm ERR! gyp http GET https://nodejs.org/download/release/v15.6.0/win-arm64/node.lib
npm ERR! gyp http GET https://nodejs.org/download/release/v15.6.0/win-x86/node.lib
npm ERR! gyp http GET https://nodejs.org/download/release/v15.6.0/win-x64/node.lib
npm ERR! gyp http 200 https://nodejs.org/download/release/v15.6.0/SHASUMS256.txt
npm ERR! gyp http 200 https://nodejs.org/download/release/v15.6.0/win-x64/node.lib
npm ERR! gyp http 404 https://nodejs.org/download/release/v15.6.0/win-arm64/node.lib
npm ERR! gyp http 200 https://nodejs.org/download/release/v15.6.0/win-x86/node.lib

关于node-gyp,这个不详细说了,简单介绍下就是,gyp是谷歌在chromium中使用的生成不同平台不同编译器的项目文件。等同于cmake,node-gyp就是在node环境中使用的,在不同的平台选用对应平台的编译器,那么在Windows下就会去找VS。

出现上面的错误呢,就是安装node的时候,设置的编译器版本,路径和现在去找到不匹配,那现在有两种解决思路,一个是重新设置记录的编译器版本和路径,另一种就是按错误提示的,升级node-gyp。我用的是升级node-gyp的办法。

解决方法一:重新设置编译器版本和路径

1、可以尝试先更换路径: 【npm config set msbuild_path “C:\Program Files
(x86)\Microsoft Visual
Studio\2019\Community\MSBuild\Current\Bin\MSBuild.exe”】
2、也可以尝试更换版本:【npm config set msvs_version 2019】(貌似不起作用)
3、也可以在每次npm
install的时候设置版本:【npm install --msvs_version=2010】

首先说明的是我用更换路径的方式没有解决问题,有条件的同学可以在这个issue中看到更多讨论的细节和思路。

解决方法二:直接升级node-gyp

方法如下:
[搬运自(https://github.com/nodejs/node-gyp/issues/1753) 讨论中的joaocgreis]
node-gyp v5.0.0 is out with Visual Studio 2019 support. It’s not yet integrated into npm so it has to be installed manually. This should do it (only need to be run once):
【Windows Command Prompt】

npm install --global node-gyp@latest
for /f "delims=" %P in ('npm prefix -g') do npm config set node_gyp "%P\node_modules\node-gyp\bin\node-gyp.js"

【Powershell】

npm install --global node-gyp@latest
npm prefix -g | % {npm config set node_gyp "$_\node_modules\node-gyp\bin\node-gyp.js"}

That is, install node-gyp globally and make the npm config variable node_gyp point to node-gyp.js.
How to undo this after node-gyp is integrated into npm

npm uninstall --global node-gyp
npm config delete node_gyp

二、补充部分

关注公众号:【深漂程序员小庄】:
内含丰富的学习资源和面试经验(不限前端、java),还有学习交流群可加,并且还有各大厂大佬可一起交流学习,一起进步~添加小庄微信,回复【加群】,可加入互联网技术交流群:

在这里插入图片描述

  • 2
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值