You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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:清理缓存并重新安装

  1. 删除本地依赖目录和锁文件:
rm -rf node_modules package-lock.json
  1. 清理npm缓存:
npm cache clean --force
  1. 重新执行安装:
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版本:

  1. 卸载已安装的x64版本:
nvm uninstall 18.15.0
  1. 在arm64终端下安装并切换版本:
nvm install 18.15.0
nvm use 18.15.0
  1. 验证架构:
node -p 'process.arch' # 输出arm64
  1. 清理缓存后重新执行npm install。

内容的提问来源于stack exchange,提问作者mario89

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.22 14:17:01