M2芯片MacBook Air安装Node.js 14.17.3报错求解决方案
问题描述
我需要开发一个指定使用Node v14.17.3的项目,此前在Intel芯片的MacBook上,执行npm install node@14.17.3就能正常安装,项目的package.json已指定版本:
"engines": { "node": "v14.17.3" },
但在M2芯片的MacBook Air上执行该命令时,出现如下错误:
command sh -c node installArchSpecificPackage npm ERR! npm ERR! code ETARGET npm ERR! npm ERR! notarget No matching version found for node-darwin-arm64@14.17.3. npm ERR! npm ERR! notarget In most cases you or one of your dependencies are requesting npm ERR! npm ERR! notarget a package version that doesn't exist. npm ERR! npm ERR! npm ERR! A complete log of this run can be found in: npm ERR! npm ERR! /Users/enzo/.npm/_logs/2023-02-04T02_37_49_054Z-debug-0.log npm ERR! node:internal/modules/cjs/loader:1050 npm ERR! throw err; npm ERR! ^ npm ERR! npm ERR! Error: Cannot find module 'node-bin-darwin-arm64/package.json' npm ERR! Require stack: npm ERR! - /Users/enzo/Documents/Project/frontend/node_modules/node/installArchSpecificPackage.js npm ERR! at Module._resolveFilename (node:internal/modules/cjs/loader:1047:15) npm ERR! at Function.resolve (node:internal/modules/cjs/helpers:109:19) npm ERR! at ChildProcess.<anonymous> (/Users/enzo/Documents/TeCambio/frontend/node_modules/node-bin-setup/index.js:19:27) npm ERR! at ChildProcess.emit (node:events:513:28) npm ERR! at maybeClose (node:internal/child_process:1091:16) npm ERR! at ChildProcess._handle.onexit (node:internal/child_process:302:5) { npm ERR! code: 'MODULE_NOT_FOUND', npm ERR! requireStack: [ npm ERR! '/Users/enzo/Documents/Project/frontend/node_modules/node/installArchSpecificPackage.js' npm ERR! ] npm ERR! } npm ERR! npm ERR! Node.js v18.14.0
请问除了安装Rosetta和NVM之外,还有什么解决方案或变通方法?
解决方案
以下是无需依赖Rosetta或NVM的几种解决思路:
手动下载安装ARM64版本Node
Node v14.17.3官方提供了darwin-arm64架构的安装包,直接下载对应版本的压缩包,解压后将node和npm可执行文件复制到/usr/local/bin(或其他已加入系统PATH的目录),执行node -v确认版本即可。使用Volta管理Node版本
Volta是轻量的Node版本管理工具,原生支持ARM架构:- 安装Volta:
curl https://get.volta.sh | bash - 安装指定Node版本:
volta install node@14.17.3 - 为项目锁定版本:在项目根目录执行
volta pin node@14.17.3,后续进入项目会自动切换到该版本。
- 安装Volta:
强制npm安装x64架构的node包
通过指定npm的架构参数,强制安装x64版本的node包,让M2芯片以兼容模式运行:
执行命令:npm install node@14.17.3 --arch=x64
注意:此方式依赖系统兼容层,性能可能略有下降,但无需额外安装Rosetta。调整项目版本管理方式
避免在项目依赖中直接安装node包,改为全局管理Node版本:- 先全局安装好Node v14.17.3
- 执行
npm config set engine-strict true,让npm严格检查当前Node版本是否符合package.json中engines字段的要求,不符合则终止操作。
内容的提问来源于stack exchange,提问作者Enzo Barrera
相关产品推荐
相关产品推荐

