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

解决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.dtcms.com/a/317473.html

相关文章:

  • 微软开发的Unix系统——Xenix测评
  • 运维新纪元:告别Excel手工规划,实现“零误差”决策
  • 无人机航拍数据集|第5期 无人机高压输电线铁塔鸟巢目标检测YOLO数据集601张yolov11/yolov8/yolov5可训练
  • Oracle开窗函数分类与统计应用
  • miniExcel一个对象加一个对象列表导出
  • 《Vue 3与Element Plus构建多语后台的深层架构》
  • 第一章-网络信息安全概述
  • 软考信息安全工程师11月备考
  • ZeroNews三步部署,安全远程访问教育内网
  • [激光原理与应用-165]:光机械件 - 影响系统性能指标的关键因素和敏感因素
  • 如何给小语种视频生成字幕?我的实测方法分享
  • VINS-Fusion+UWB辅助算法高精度实现
  • 【计算机网络 | 第3篇】物理媒介
  • Git 分支迁移完整指南(结合分支图分析)
  • 微软的BitLocker加密
  • 华为云 Flexus 部署 coze-studio
  • 第五十篇:AI画家的“神经中枢”:ComfyUI的推理路径与缓存逻辑深度解析
  • PostgreSQL 高可用与负载均衡
  • iOS 文件管理实战指南 查看 App 数据与系统日志的完整方法
  • 26-OS-PV大题
  • 重生之我在暑假学习微服务第十一天《配置篇》+网关篇错误订正
  • 启动VScode调试时报错:go命令的版本是1.23.0,而工具链的版本是1.23.6
  • IDEA 2025下载安装教程【超详细】保姆级图文教程(附安装包)
  • 华硕携多款明星电竞显示器亮相 ChinaJoy2025,联袂 TCL 华星打造沉浸体验
  • [Oracle] SIGN()函数
  • 微信小程序最大层级跳转问题
  • 使用 Maxwell 和 RabbitMQ 监控 Mysql Flowable 表变更
  • Kubernetes(k8s)之容忍与污点
  • Java学习第一百零九部分——Jenkins(一)
  • k8s +cilium+metallb 集群流量走向