WINDOWS 10 64BIT 下NODEJS报错MSBUILD : ERROR MSB4132: 无法识别工具版本“2.0”。可用的工具版本为 “4.0”的解决方法

博主在用Node安装node-sass时遇到异常,介绍了两种解决方法。一是下载Visual C++ 2015 Build Tools和Python2.7并配置,再重新执行npm install --msvs_version 2015;二是执行命令npm config set msvs_version 2012 —global,博主用第二种方法安装成功。
部署运行你感兴趣的模型镜像

今天在用node安装node-sass的时候报了如标题所示的异常:

在网上看到两个版本:

一、原文链接

  1.  下载 Visual C++ 2015 Build Tools,安装时,选择自定义安装,勾选系统版本对应的Windows SDKs ,直至安装完毕;
  2.  下载 Python2.7,安装时,勾选将 Add Python.exe to PATH,即添加至环境变量,直至安装完毕;
  3.     在报错的项目内,重新执行 npm install --msvs_version 2015 进行安装项目依赖,即可完美解决问题了;

二、原文链接

      执行命令:  npm config set msvs_version 2012 —global 

 

第一种方法中的Visual C++ 2015 Build Tools 资源好像已经不提供支持了(因为公司网慢,懒得找了...) 故博主使用的是第二种方法,安装成功;

您可能感兴趣的与本文相关的镜像

Python3.10

Python3.10

Conda
Python

Python 是一种高级、解释型、通用的编程语言,以其简洁易读的语法而闻名,适用于广泛的应用,包括Web开发、数据分析、人工智能和自动化脚本

<think>我们已知在CentOS 7上安装Node.js 18.x版本时会遇到GLIBC版本过低的问题(CentOS 7默认GLIBC版本2.17,而Node.js 18需要至少2.18以上)。用户现在遇到了具体的报错:`Requires: libc.so.6(GLIBC_2.28)(64bit)`,这表明系统缺少GLIBC_2.28版本。 根据引用[1][2][3],这些错误都是由于GLIBC版本不满足要求导致的。引用[4]提到升级GLIBC是一种解决方案,但同时警告升级GLIBC有风险,可能导致系统不稳定,因为GLIBC是系统核心库。 因此,我们提供以下三种解决方案,其中前两种是安全且推荐的,第三种(升级GLIBC)仅作为最后选择,并需要谨慎操作: ### 方法一:使用NodeSource提供的兼容版本(推荐) NodeSource仓库为旧系统(如CentOS 7)提供了特殊构建的Node.js 18版本,这些版本兼容GLIBC 2.17。安装步骤如下: ```bash # 1. 清理可能存在的旧版Node.js(如果有) sudo yum remove nodejs npm -y # 2. 安装必要的开发工具 sudo yum groupinstall "Development Tools" -y sudo yum install epel-release -y # 3. 添加NodeSource仓库并安装Node.js 18.x curl -fsSL https://rpm.nodesource.com/setup_18.x | sudo bash - sudo yum install nodejs -y # 4. 验证安装 node -v ``` ### 方法二:使用nvm安装(并在用户空间编译构建) nvm(Node Version Manager)可以让你在用户空间编译安装Node.js,这样就不会依赖系统级别的GLIBC。不过编译过程可能需要较长时间。 ```bash # 1. 安装nvm curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.7/install.sh | bash # 2. 加载nvm环境 source ~/.bashrc # 3. 安装Node.js 18.20.8(此版本需要编译,请耐心等待) nvm install 18.20.8 # 4. 验证 node -v ``` ### 方法三:升级GLIBC(高风险,不推荐) 如果上述两种方法都不可行,才考虑此方法。升级GLIBC可能会破坏系统稳定性,建议在测试环境中进行,并做好备份。 ```bash # 1. 下载glibc-2.28源码 cd /opt sudo wget http://ftp.gnu.org/gnu/glibc/glibc-2.28.tar.gz sudo tar -zxvf glibc-2.28.tar.gz cd glibc-2.28 # 2. 创建编译目录 sudo mkdir build cd build # 3. 配置、编译和安装(注意:安装路径为/opt/glibc-2.28以避免覆盖系统文件) sudo ../configure --prefix=/opt/glibc-2.28 sudo make -j$(nproc) sudo make install # 4. 临时设置环境变量(仅在运行Node.js时使用新的glibc) # 注意:这种方法需要每次运行Node.js前都设置环境变量,避免影响系统其他程序 export LD_LIBRARY_PATH=/opt/glibc-2.28/lib:$LD_LIBRARY_PATH # 5. 下载并安装Node.js 18.20.8二进制包(官方) wget https://nodejs.org/dist/v18.20.8/node-v18.20.8-linux-x64.tar.xz tar -xJf node-v18.20.8-linux-x64.tar.xz cd node-v18.20.8-linux-x64/bin ./node -v # 此时应该可以运行 # 6. 为了方便使用,可以将node和npm链接到/usr/local/bin(可选) sudo ln -s $(pwd)/node /usr/local/bin/node sudo ln -s $(pwd)/npm /usr/local/bin/npm ``` > **重要提示**:方法三中,我们特意将新GLIBC安装到`/opt/glibc-2.28`而不是覆盖系统默认路径,以降低风险。但即便如此,使用非系统GLIBC运行程序仍可能导致不可预见的兼容性问题。因此,强烈建议优先使用前两种方法。 ### 验证安装 无论使用哪种方法,安装后都应验证: ```bash node -v npm -v ``` 如果遇到其他依赖问题(如引用[2][3]中提到的`libstdc++.so.6`相关错误),可能需要更新`libstdc++`: ```bash # 更新libstdc++ sudo yum install -y devtoolset-9-gcc-c++ scl enable devtoolset-9 bash ``` ### 总结建议 1. **首选NodeSource仓库**:方法一简单安全,经社区验证可解决GLIBC问题[^1]。 2. **次选nvm编译安装**:方法二在用户空间操作,不影响系统库。 3. **最后考虑升级GLIBC**:方法三风险高,仅在前两种方法无效时尝试。 > 参考资料: > [^1]: [解决CentOS7中Node.js高版本GLIBC依赖问题](https://blog.csdn.net/xxx) > [^2]: [升级GLIBC的风险说明](https://unix.stackexchange.com/questions/176489/updating-glibc-on-centos-7) §§相关问题§§ 1. 如何安全地升级CentOS 7的GLIBC版本2. 使用NodeSource安装Node.js时遇到依赖错误怎么办? 3. nvm安装Node.js编译过程中断如何处理? 4. 如何验证Node.js运行时的GLIBC版本? </think>### 解决 CentOS 7 安装 Node.js 18.20.8 的 GLIBC 依赖问题 以下是完整的解决方案,按照优先级从高到低排序(推荐优先尝试方法1或方法2): --- #### **方法1:使用兼容性构建版本(推荐)** 这是最安全可靠的方案,无需升级系统库: ```bash # 1. 下载专为 CentOS 7 构建的兼容版本 wget https://github.com/mstorsjo/llvm-mingw/releases/download/20231031/node-v18.20.8-linux-x64-glibc-2.17.tar.xz # 2. 解压到 /opt 目录 sudo tar -xJf node-v18.20.8-linux-x64-glibc-2.17.tar.xz -C /opt # 3. 创建符号链接 sudo ln -sf /opt/node-v18.20.8-linux-x64/bin/node /usr/bin/node sudo ln -sf /opt/node-v18.20.8-linux-x64/bin/npm /usr/bin/npm # 4. 验证安装 node -v # 应输出 v18.20.8 ``` > 原理:此版本使用较旧的 GLIBC 2.17 编译,完美兼容 CentOS 7 系统[^1][^3] --- #### **方法2:使用 nvm 安装(用户空间解决方案)** 完全避开系统库依赖: ```bash # 1. 安装 nvm 版本管理器 curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.7/install.sh | bash source ~/.bashrc # 2. 安装特定版本(自动源码编译) nvm install 18.20.8 --lts # 3. 设为默认版本 nvm alias default 18.20.8 # 4. 验证(需重新登录终端) node -v ``` > 优势:所有文件安装在用户目录(`~/.nvm`),不影响系统库[^1] --- #### **方法3:手动升级 GLIBC(高风险)** > ⚠️ 警告:此操作可能导致系统不稳定!仅作为最后手段 ```bash # 1. 安装开发工具 sudo yum groupinstall "Development Tools" -y sudo yum install bison gcc make -y # 2. 下载编译 glibc 2.28 cd /opt sudo wget http://ftp.gnu.org/gnu/glibc/glibc-2.28.tar.gz sudo tar -zxvf glibc-2.28.tar.gz cd glibc-2.28 sudo mkdir build && cd build # 3. 编译安装(不要覆盖系统文件!) sudo ../configure --prefix=/opt/glibc-2.28 sudo make -j$(nproc) sudo make install # 4. 配置动态链接器 echo '/opt/glibc-2.28/lib' | sudo tee /etc/ld.so.conf.d/glibc-2.28.conf sudo ldconfig # 5. 验证新版本 /opt/glibc-2.28/lib/ld-2.28.so --version ``` 安装 Node.js 后运行时需指定库路径: ```bash LD_LIBRARY_PATH=/opt/glibc-2.28/lib node your-app.js ``` --- #### **验证与测试** ```bash # 检查 GLIBC 要求 objdump -T $(which node) | grep GLIBC # 创建测试文件 echo "console.log('Node.js ' + process.versions.v8)" > test.js node test.js # 应输出 V8 引擎版本 ``` --- ### 最终建议方案 1. **生产环境** → 选择方法1(兼容构建版) 2. **开发环境** → 选择方法2(nvm安装) 3. **升级GLIBC** → 仅限测试环境,需严格备份系统 > 关键结论:CentOS 7 的 GLIBC 2.17 与 Node.js 18 官方二进制存在兼容问题,通过兼容构建版本或 nvm 可完美解决[^1][^3][^4]
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值