当前位置: 首页 > ai >正文

解决Node.js v12在Apple Silicon(M1/M2)上的安装问题

引言

Mac(M1芯片)通过NVM(Node Version Manager)安装Node.js 较低版本时遇到的问题及解决方案。

遇到的问题

运行nvm install 12命令时,遇到了以下两个主要错误:

  1. 404 Not Found:下载地址 https://nodejs.org/dist/v12.22.12/node-v12.22.12-darwin-arm64.tar.gz 返回404错误。
  2. 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及其依赖包,确保系统的安全性与稳定性。


希望通过这篇文章能帮助大家顺利解决类似问题。如果您有任何疑问或更好的解决方案,欢迎留言交流!

http://www.xdnf.cn/news/17115.html

相关文章:

  • 使用R将nc文件转换为asc文件或者tif文件
  • 下载Android studio
  • try catch throw的本质
  • Linux《进程间通信(上)》
  • WARN:get Topic [TBW102] RouteInfoFromNameServer is not exist value
  • 使用MatterJs物理2D引擎实现重力和鼠标交互等功能,有点击事件(盒子堆叠效果)
  • [Oracle] NVL()函数
  • 测试单节点elasticsearch配置存储压缩后的比率
  • 河南萌新联赛2025第(四)场【补题】
  • 8月6日星期三今日早报简报微语报早读
  • JAVA无人系统台球茶室棋牌室系统支持H5小程序APP公众号源码
  • 基于跨境电商场景的智能商品管理系统,采用Bootstrap+Django+MySQL技术架构,实现用户行为追踪、智能推荐、多维度商品展示等核心功能
  • 8、项目管理
  • JAVA 程序员cursor 和idea 结合编程
  • Solidity 编程进阶
  • 8.6 JavaWeb(请求响应 P67-P74)
  • PyTorch入门引导
  • Go语言“fmt”包详解
  • 【Linux内核系列】:信号(上)
  • Docker的安装,服务器与客户端之间的通信
  • LeetCode每日一题,8-6
  • springboot项目justAuth扩展第二个小程序
  • Unity轻量观察相机
  • 功能安全和网络安全的综合保障流程
  • 云端软件工程智能代理:任务委托与自动化实践全解
  • CDP集群中通过Hive外部表迁移HBase数据的操作记录
  • 昇思+昇腾开发板+DeepSeek模型推理和性能优化
  • 自己本地搭建的服务器怎么接公网?公网IP直连服务器方法,和只有内网IP直接映射到互联网
  • 线性代数中矩阵的基本运算运算
  • 哲学中的主体性:历史演进、理论范式与当代重构