引言
Mac(M1芯片)通过NVM(Node Version Manager)安装Node.js 较低版本时遇到的问题及解决方案。
遇到的问题
运行nvm install 12
命令时,遇到了以下两个主要错误:
- 404 Not Found:下载地址
https://nodejs.org/dist/v12.22.12/node-v12.22.12-darwin-arm64.tar.gz
返回404错误。 - Python not found:尝试从源码编译时,出现
./configure: line 3: exec: python: not found
错误。
➜ ~ nvm install 12
Downloading and installing node v12.22.12...
Downloading https://nodejs.org/dist/v12.22.12/node-v12.22.12-darwin-arm64.tar.gz...
curl: (56) The requested URL returned error: 404
Binary download from https://nodejs.org/dist/v12.22.12/node-v12.22.12-darwin-arm64.tar.gz failed, trying source.
grep: /Users/username/.nvm/.cache/bin/node-v12.22.12-darwin-arm64/node-v12.22.12-darwin-arm64.tar.gz: No such file or directory
Provided file to checksum does not exist.
Binary download failed, trying source.
Clang v3.5+ detected! CC or CXX not specified, will use Clang as C/C++ compiler!
Local cache found: $NVM_DIR/.cache/src/node-v12.22.12/node-v12.22.12.tar.gz
Checksums match! Using existing downloaded archive $NVM_DIR/.cache/src/node-v12.22.12/node-v12.22.12.tar.gz
$>./configure --prefix=/Users/username/.nvm/versions/node/v12.22.12 <
./configure: line 3: exec: python: not found
nvm: install v12.22.12 failed!
分析原因
错误1:二进制文件不存在
Node.js v12发布时,Apple Silicon尚未推出,因此官方没有提供针对darwin-arm64
架构的预编译二进制文件,导致下载失败。
错误2:缺少Python依赖
由于二进制文件下载失败,NVM尝试从源码编译Node.js,但过程中发现系统缺少必要的Python依赖(Node.js构建过程需要Python 2.x)。
解决方案
方案1:手动指定使用x64架构
可以直接使用以下命令强制使用x64架构:
arch -x86_64 nvm install 12
方案2:升级Node.js版本(推荐)
考虑到Node.js v12已于2022年4月停止维护,建议升级至更高版本(例如v18、v20等),这些版本已原生支持Apple Silicon,并且更加安全高效。
nvm install 18
总结
对于基于旧版Node.js的项目,短期内可以通过上述方法解决兼容性问题,但从长远来看,建议更新项目以适应新版Node.js及其依赖包,确保系统的安全性与稳定性。
希望通过这篇文章能帮助大家顺利解决类似问题。如果您有任何疑问或更好的解决方案,欢迎留言交流!