Mac M1 Pro执行npm install报错:找不到@nx/nx-darwin-arm64模块
M1 Pro MacBook 上 Angular 项目 npm install 失败:找不到 @nx/nx-darwin-* 模块
问题场景
在M1 Pro芯片的MacBook上克隆Angular项目,执行npm install时出现Error: Cannot find module '@nx/nx-darwin-arm64';切换到x86_64架构并安装Node.js 18.15.0后,又出现Error: Cannot find module '@nx/nx-darwin-x64'。该项目在Windows 10 + Node.js 18.15.0环境下可正常安装。
arm64架构下的错误日志
npm ERR! code 1 npm ERR! path /Users/username/projects/abc/project-name/node_modules/nx npm ERR! command failed npm ERR! command sh -c node ./bin/post-install npm ERR! /Users/username/projects/abc/project-name/node_modules/nx/src/native/native-bindings.js:244 npm ERR! throw loadError npm ERR! ^ npm ERR! npm ERR! Error: Cannot find module '@nx/nx-darwin-arm64' npm ERR! Require stack: npm ERR! - /Users/username/projects/abc/project-name/node_modules/nx/src/native/index.js npm ERR! - /Users/username/projects/abc/project-name/node_modules/nx/src/hasher/node-task-hasher-impl.js npm ERR! - /Users/username/projects/abc/project-name/node_modules/nx/src/hasher/task-hasher.js npm ERR! - /Users/username/projects/abc/project-name/node_modules/nx/src/hasher/hash-task.js npm ERR! - /Users/username/projects/abc/project-name/node_modules/nx/src/tasks-runner/run-command.js npm ERR! - /Users/username/projects/abc/project-name/node_modules/nx/src/nx-cloud/utilities/get-cloud-options.js npm ERR! - /Users/username/projects/abc/project-name/node_modules/nx/bin/post-install.js npm ERR! at Module._resolveFilename (node:internal/modules/cjs/loader:1142:15) npm ERR! at Function.resolve (node:internal/modules/helpers:190:19) npm ERR! at Module._load (/Users/username/projects/abc/project-name/node_modules/nx/src/native/index.js:53:36) npm ERR! at Module.require (node:internal/modules/cjs/loader:1230:19) npm ERR! at require (node:internal/modules/helpers:179:18) npm ERR! at Object.<anonymous> (/Users/username/projects/abc/project-name/node_modules/nx/src/native/native-bindings.js:135:29) npm ERR! at Module._compile (node:internal/modules/cjs/loader:1368:14) npm ERR! at Module._extensions..js (node:internal/modules/cjs/loader:1426:10) npm ERR! at Module.load (node:internal/modules/cjs/loader:1205:32) npm ERR! at Module._load (node:internal/modules/cjs/loader:1021:12) { npm ERR! code: 'MODULE_NOT_FOUND', npm ERR! requireStack: [ npm ERR! '/Users/username/projects/abc/project-name/node_modules/nx/src/native/index.js', npm ERR! '/Users/username/projects/abc/project-name/node_modules/nx/src/hasher/node-task-hasher-impl.js', npm ERR! '/Users/username/projects/abc/project-name/node_modules/nx/src/hasher/task-hasher.js', npm ERR! '/Users/username/projects/abc/project-name/node_modules/nx/src/hasher/hash-task.js', npm ERR! '/Users/username/projects/abc/project-name/node_modules/nx/src/tasks-runner/run-command.js', npm ERR! '/Users/username/projects/abc/project-name/node_modules/nx/src/nx-cloud/utilities/get-cloud-options.js', npm ERR! '/Users/username/projects/abc/project-name/node_modules/nx/bin/post-install.js' npm ERR! ] npm ERR! } npm ERR! npm ERR! Node.js v21.7.3 npm ERR! A complete log of this run can be found in: /Users/username/.npm/_logs/2024-06-13T15_02_04_941Z-debug-0.log
项目 package.json 内容
{ "name": "project-name", "version": "0.0.0", "scripts": { "ng": "ng", "start": "ng serve", "build": "ng build", "watch": "ng build --watch --configuration development", "test": "ng test", "lint": "ng lint" }, "private": true, "dependencies": { "@angular/animations": "^17.3.0", "@angular/cdk": "~17.3.5", "@angular/common": "^17.3.0", "@angular/compiler": "^17.3.0", "@angular/core": "^17.3.0", "@angular/forms": "^17.3.5", "@angular/localize": "^17.3.0", "@angular/material": "~17.3.5", "@angular/platform-browser": "^17.3.0", "@angular/platform-browser-dynamic": "^17.3.0", "@angular/router": "^17.3.0", "@ngx-formly/core": "^6.3.0", "@ngx-formly/kendo": "^6.3.0", "@progress/kendo-angular-buttons": "15.4.0", "@progress/kendo-angular-common": "15.4.0", "@progress/kendo-angular-dateinputs": "^15.4.0", "@progress/kendo-angular-dialog": "15.4.0", "@progress/kendo-angular-dropdowns": "15.4.0", "@progress/kendo-angular-excel-export": "15.4.0", "@progress/kendo-angular-grid": "^15.4.0", "@progress/kendo-angular-icons": "15.4.0", "@progress/kendo-angular-inputs": "15.4.0", "@progress/kendo-angular-intl": "15.4.0", "@progress/kendo-angular-l10n": "15.4.0", "@progress/kendo-angular-label": "15.4.0", "@progress/kendo-angular-layout": "15.4.0", "@progress/kendo-angular-navigation": "15.4.0", "@progress/kendo-angular-notification": "^15.4.0", "@progress/kendo-angular-pdf-export": "15.4.0", "@progress/kendo-angular-popup": "15.4.0", "@progress/kendo-angular-progressbar": "15.4.0", "@progress/kendo-angular-spreadsheet": "15.4.0", "@progress/kendo-angular-treeview": "15.4.0", "@progress/kendo-angular-upload": "^15.4.0", "@progress/kendo-angular-utils": "15.4.0", "@progress/kendo-data-query": "^1.0.0", "@progress/kendo-drawing": "^1.19.0", "@progress/kendo-licensing": "^1.0.2", "@progress/kendo-svg-icons": "^2.0.0", "@progress/kendo-theme-default": "^7.2.0", "angular-oauth2-oidc": "^17.0.2", "rxjs": "~7.8.0", "tslib": "^2.3.0", "zone.js": "~0.14.3" }, "devDependencies": { "@angular-devkit/build-angular": "^17.3.1", "@angular-eslint/builder": "17.3.0", "@angular-eslint/eslint-plugin": "17.3.0", "@angular-eslint/eslint-plugin-template": "17.3.0", "@angular-eslint/schematics": "17.3.0", "@angular-eslint/template-parser": "17.3.0", "@angular/cli": "^17.3.1", "@angular/compiler-cli": "^17.3.0", "@ngx-formly/schematics": "^6.3.0", "@types/jasmine": "~5.1.0", "@typescript-eslint/eslint-plugin": "7.2.0", "@typescript-eslint/parser": "7.2.0", "eslint": "^8.57.0", "eslint-config-prettier": "^9.1.0", "eslint-plugin-prettier": "^5.1.3", "jasmine-core": "~5.1.0", "karma": "~6.4.0", "karma-chrome-launcher": "~3.2.0", "karma-coverage": "~2.2.0", "karma-jasmine": "~5.1.0", "karma-jasmine-html-reporter": "~2.1.0", "prettier": "^3.2.5", "prettier-eslint": "^16.3.0", "typescript": "~5.4.2" } }
已尝试的操作
切换到x86_64架构并安装对应Node.js版本:
arch -x86_64 zsh nvm install 18.15 node -p 'process.arch' -> x64
切换后执行npm install,仍出现架构对应模块找不到的错误。
解决方案
以下是几种可行的解决方法:
方法1:清理缓存并重新安装
- 删除本地依赖目录和锁文件:
rm -rf node_modules package-lock.json
- 清理npm缓存:
npm cache clean --force
- 重新执行安装:
npm install
方法2:强制禁用Nx原生绑定
安装时添加环境变量,强制Nx使用非原生哈希实现:
NX_NATIVE_HASHING=false npm install
若需长期生效,可将变量添加到shell配置文件(如~/.zshrc):
echo "export NX_NATIVE_HASHING=false" >> ~/.zshrc source ~/.zshrc
之后再执行npm install即可。
方法3:手动安装对应架构的Nx原生模块
根据当前终端架构,直接安装缺失的模块:
- arm64架构:
npm install @nx/nx-darwin-arm64 --save-dev
- x64架构:
npm install @nx/nx-darwin-x64 --save-dev
方法4:使用arm64原生Node.js 18.15.0
无需切换架构,直接安装适配M1的Node.js版本:
- 卸载已安装的x64版本:
nvm uninstall 18.15.0
- 在arm64终端下安装并切换版本:
nvm install 18.15.0 nvm use 18.15.0
- 验证架构:
node -p 'process.arch' # 输出arm64
- 清理缓存后重新执行
npm install。
内容的提问来源于stack exchange,提问作者mario89
相关产品推荐
相关产品推荐

