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

Mac环境npm install时node-gyp编译失败问题求助

解决MacOS Monterey下Vue遗留项目npm install的node-gyp编译错误

错误日志

npm ERR! 1 error generated.
npm ERR! make: *** [Release/obj.target/binding/src/binding.o] Error 1
npm ERR! gyp ERR! build error
npm ERR! gyp ERR! stack Error: `make` failed with exit code: 2
npm ERR! gyp ERR! stack     at ChildProcess.onExit (/Users/username/Desktop/Work/Projects/project_name/node_modules/node-gyp/lib/build.js:262:23)
npm ERR! gyp ERR! stack     at ChildProcess.emit (node:events:365:28)
npm ERR! gyp ERR! stack     at Process.ChildProcess._handle.onexit (node:internal/child_process:290:12)
npm ERR! gyp ERR! System Darwin 21.6.0
npm ERR! gyp ERR! command "/usr/local/bin/node" "/Users/username/Desktop/Work/Projects/project_name/node_modules/node-gyp/bin/node-gyp.js" "rebuild" "--verbose" "--libsass_ext=" "--libsass_cflags=" "--libsass_ldflags=" "--libsass_library="
npm ERR! gyp ERR! cwd /Users/username/Desktop/Work/Projects/project_name/node_modules/node-sass
npm ERR! gyp ERR! node -v v16.0.0
npm ERR! gyp ERR! node-gyp -v v3.8.0
npm ERR! gyp ERR! not ok
npm ERR! Build failed with error code: 1

环境信息

  • 操作系统:MacOS Monterey
  • Node版本:v16.0.0
  • npm版本:7.10.0
  • Python版本:2.7.18

项目package.json内容

{
  "name": "my-app-client",
  "dependencies": {
    "@gtm-support/vue2-gtm": "^1.3.0",
    "axios": "^0.18.1",
    "cross-env": "^5.2.0",
    "cryptr": "^4.0.1",
    "es6-promise": "^4.2.4",
    "https": "^1.0.0",
    "underscore": "^1.9.1",
    "vue": "^2.5.2",
    "vue-cookies": "^1.5.4",
    "vue-i18n": "^8.0.0",
    "vue-recaptcha": "^1.1.1",
    "vue-router": "^3.0.1",
    "vue-scrollto": "^2.17.1",
    "vue-session": "^1.0.0",
    "vuex": "^3.0.1"
  },
  "devDependencies": {
    "autoprefixer": "^7.1.2",
    "babel-core": "^6.22.1",
    "babel-eslint": "^7.2.3",
    "babel-helper-vue-jsx-merge-props": "^2.0.3",
    "babel-loader": "^7.1.1",
    "babel-plugin-syntax-jsx": "^6.18.0",
    "babel-plugin-transform-runtime": "^6.22.0",
    "babel-plugin-transform-vue-jsx": "^3.5.0",
    "babel-preset-env": "^1.3.2",
    "babel-preset-stage-2": "^6.22.0",
    "chalk": "^2.0.1",
    "copy-webpack-plugin": "^4.0.1",
    "css-loader": "^0.28.0",
    "dotenv-webpack": "^4.0.0",
    "eslint": "^4.15.0",
    "eslint-config-standard": "^10.2.1",
    "eslint-friendly-formatter": "^3.0.0",
    "eslint-loader": "^1.7.1",
    "eslint-plugin-import": "^2.7.0",
    "eslint-plugin-node": "^5.2.0",
    "eslint-plugin-promise": "^3.4.0",
    "eslint-plugin-standard": "^3.0.1",
    "eslint-plugin-vue": "^4.0.0",
    "eventsource-polyfill": "^0.9.6",
    "extract-text-webpack-plugin": "^3.0.0",
    "file-loader": "^1.1.4",
    "friendly-errors-webpack-plugin": "^1.6.1",
    "html-webpack-plugin": "^2.30.1",
    "less": "^3.0.1",
    "less-loader": "~4.1.0",
    "node-notifier": "^5.1.2",
    "node-sass": "^4.7.2",
    "nodemon": "^1.15.1",
    "optimize-css-assets-webpack-plugin": "^3.2.0",
    "ora": "^1.2.0",
    "portfinder": "^1.0.13",
    "postcss-import": "^11.0.0",
    "postcss-loader": "^2.0.8",
    "postcss-url": "^7.2.1",
    "rimraf": "^2.6.0",
    "sass-loader": "^6.0.7",
    "semver": "^5.3.0",
    "shelljs": "^0.7.6",
    "uglifyjs-webpack-plugin": "^1.1.1",
    "url-loader": "^0.5.8",
    "vue-loader": "^13.3.0",
    "vue-style-loader": "^3.0.1",
    "vue-template-compiler": "^2.5.2",
    "webpack": "^3.6.0",
    "webpack-bundle-analyzer": "^2.9.0",
    "webpack-dev-server": "^2.9.1",
    "webpack-hot-middleware": "^2.22.3",
    "webpack-merge": "^4.1.0"
  },
  "engines": {
    "node": ">= 8.0.0",
    "npm": ">= 3.0.0"
  },
  "browserslist": [
    "> 1%",
    "last 2 versions",
    "not ie <= 8"
  ]
}

解决方案

方案1:降级Node版本到兼容范围(推荐)

node-sass@4.7.2仅支持Node.js 4.x-10.x,当前Node16版本过高是核心冲突原因:

  1. 若未安装nvm,先通过Homebrew安装:
    brew install nvm
    
    安装完成后,根据终端提示在~/.zshrc或~/.bashrc中配置环境变量,重启终端生效。
  2. 安装并切换到Node10.24.1(10系列最后稳定版):
    nvm install 10.24.1
    nvm use 10.24.1
    
  3. 删除原有依赖文件:
    rm -rf node_modules package-lock.json
    
  4. 重新执行安装:
    npm install
    

方案2:强制使用node-sass预编译二进制包,跳过本地编译

通过指定镜像获取预编译好的二进制文件,避免本地编译失败:

  1. 设置npm镜像:
    npm config set sass_binary_site=https://npm.taobao.org/mirrors/node-sass/
    
  2. 删除原有依赖文件后重新安装:
    rm -rf node_modules package-lock.json
    npm install
    

方案3:配置MacOS编译环境,修复node-gyp构建问题

若坚持使用Node16,需更新node-gyp并配置编译环境:

  1. 确保Xcode命令行工具正确安装:
    xcode-select --install
    # 若已安装仍报错,重置工具路径
    xcode-select --reset
    
  2. 更新全局node-gyp版本:
    npm install -g node-gyp
    
  3. 配置node-gyp使用Python2.7:
    npm config set python python2.7
    
  4. 指定clang编译器:
    export CC=clang
    export CXX=clang++
    
  5. 删除原有依赖文件后重新安装:
    rm -rf node_modules package-lock.json
    npm install
    

方案4:替换node-sass为dart-sass(需修改项目依赖)

若允许调整依赖版本,用dart-sass替代旧版node-sass可彻底避免编译问题:

  1. 修改package.json:
    • 将node-sass: "^4.7.2"替换为sass: "^1.32.0"
    • 将sass-loader: "^6.0.7"升级为sass-loader: "^10.1.1"
  2. 删除原有依赖文件后重新安装:
    rm -rf node_modules package-lock.json
    npm install
    

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.18 08:05:56