我需要开发一个使用 Node v14.17.3 的项目。在我之前配备英特尔芯片的 Macbook 中,我使用的是节点 16,但在这个特定项目中,我运行了
npm install [email protected]
,一切正常。
该项目具有 package.json 文件中指定的版本:
"engines": {
"node": "v14.17.3"
},
当我尝试使用我的 M2 芯片 Macbook 在项目上安装节点 14 时,出现以下错误:
command sh -c node installArchSpecificPackage
npm ERR! npm ERR! code ETARGET
npm ERR! npm ERR! notarget No matching version found for [email protected].
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
此问题有任何解决方案/解决方法吗?我正在考虑安装 Rosseta 和 NVM,但我宁愿用一些更好的解决方案来做到这一点。预先感谢!
批准的答案对我不起作用。我不得不将
arch
切换为 x86
arch -x86_64 zsh
nvm install 14
nvm us 14
这对我有用。
适用于M2芯片
需要澄清的是,安装 Node.js 时,它会尝试下载 darwin arm64 版本,该版本仅从 Node.js 16 开始可用。如果您使用的是 M1/M2 Mac,则需要使用 Rosetta shell 来安装早于 16 的 Node.js 版本。
以下是如何使用 Rosetta 启动终端:
重新打开终端(Rosetta)后,此命令应该可以工作。
nvm install 14.21.3
我可以让它发挥作用:
对于配备 M1 和 M2 芯片的 Apple 计算机,您必须使用 nvm。
nvm use
npm install
安装项目依赖项就是这样...您可以在 M1 或 M2 Mac 上使用任何 Node 版本。
PD:我认为你需要安装 Rosetta 才能在新的 Mac 上安装 NVM。您只需运行即可安装它:
usr/sbin/softwareupdate –install-rosetta –agree-to-license
希望有帮助! 🙌🏻