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

MacBook M2 Pro执行npm install遇node-gyp编译错误求助

MacBook M2 Pro 运行旧Vue项目npm install报错:fibers@5.0.3和fsevents@1.2.9编译失败

刚入手MacBook M2 Pro,使用node v19.6.0和npm 6.14.18运行旧Vue项目,执行npm install时出现两个node-gyp编译错误,涉及fibers@5.0.3和fsevents@1.2.9依赖,已完成node-gyp官网Mac配置步骤,问题仍存在。

错误详情

1. fibers@5.0.3编译失败

> fibers@5.0.3 install /Users/user1/Projects/project1/frontend/node_modules/fibers
> node build.js || nodejs build.js

CXX(target) Release/obj.target/fibers/src/fibers.o
../src/fibers.cc:27:65: error: no member named 'kFinalizer' in 'v8::WeakCallbackType'
              handle.SetWeak(val, WeakCallbackShim<F, P>, WeakCallbackType::kFinalizer);
                                                          ~~~~~~~~~~~~~~~~~~^
1 error generated.
make: *** [Release/obj.target/fibers/src/fibers.o] Error 1
gyp ERR! build error 
gyp ERR! stack Error: `make` failed with exit code: 2
gyp ERR! stack     at ChildProcess.onExit (/Users/user1/.nvm/versions/node/v19.6.0/lib/node_modules/npm/node_modules/npm-lifecycle/node_modules/node-gyp/lib/build.js:203:23)
gyp ERR! stack     at ChildProcess.emit (node:events:512:28)
gyp ERR! stack     at ChildProcess._handle.onexit (node:internal/child_process:293:12)
gyp ERR! System Darwin 22.1.0
gyp ERR! command "/Users/user1/.nvm/versions/node/v19.6.0/bin/node" "/Users/user1/.nvm/versions/node/v19.6.0/lib/node_modules/npm/node_modules/npm-lifecycle/node_modules/node-gyp/bin/node-gyp.js" "rebuild" "--release"
gyp ERR! cwd /Users/user1/Projects/project1/frontend/node_modules/fibers
gyp ERR! node -v v19.6.0
gyp ERR! node-gyp -v v9.3.1
gyp ERR! not ok 
node-gyp exited with code: 1

2. fsevents@1.2.9编译失败

node-pre-gyp WARN Using request for node-pre-gyp https download 
node-pre-gyp WARN Tried to download(403): https://fsevents-binaries.s3-us-west-2.amazonaws.com/v1.2.9/fse-v1.2.9-node-v111-darwin-arm64.tar.gz 
node-pre-gyp WARN Pre-built binaries not found for fsevents@1.2.9 and node@19.6.0 (node-v111 ABI, unknown) (falling back to source compile with node-gyp) 
 SOLINK_MODULE(target) Release/.node
 CXX(target) Release/obj.target/fse/fsevents.o
In file included from ../fsevents.cc:6:
In file included from ../../nan/nan.h:174:
../../nan/nan_callbacks.h:55:23: error: no member named 'AccessorSignature' in namespace 'v8'
typedef v8::Local<v8::AccessorSignature> Sig;
                 ~~~~^
In file included from ../fsevents.cc:6:
../../nan/nan.h:2536:8: error: no matching member function for call to 'SetAccessor'
 tpl->SetAccessor(
 ~~~~~^~~~~~~~~~~
/Users/user1/Library/Caches/node-gyp/19.6.0/include/node/v8-template.h:814:8: note: candidate function not viable: no known conversion from 'imp::Sig' (aka 'int') to 'v8::SideEffectType' for 7th argument
 void SetAccessor(
      ^
/Users/user1/Library/Caches/node-gyp/19.6.0/include/node/v8-template.h:807:8: note: candidate function not viable: no known conversion from 'imp::NativeGetter' (aka 'void (*)(v8::Local<v8::Name>, const v8::PropertyCallbackInfo<v8::Value> &)') to 'v8::AccessorGetterCallback' (aka 'void (*)(Local<v8::String>, const PropertyCallbackInfo<v8::Value> &)') for 2nd argument
 void SetAccessor(
      ^
In file included from ../fsevents.cc:6:
In file included from ../../nan/nan.h:2884:
../../nan/nan_typedarray_contents.h:34:43: error: no member named 'GetContents' in 'v8::ArrayBuffer'
     data   = static_cast<char*>(buffer->GetContents().Data()) + byte_offset;
                                 ~~~~~~~~^
3 errors generated.
make: *** [Release/obj.target/fse/fsevents.o] Error 1
gyp ERR! build error 
gyp ERR! stack Error: `make` failed with exit code: 2
gyp ERR! stack     at ChildProcess.onExit (/Users/user1/.nvm/versions/node/v19.6.0/lib/node_modules/npm/node_modules/npm-lifecycle/node_modules/node-gyp/lib/build.js:203:23)
gyp ERR! stack     at ChildProcess.emit (node:events:512:28)
gyp ERR! stack     at ChildProcess._handle.onexit (node:internal/child_process:293:12)
gyp ERR! System Darwin 22.1.0
gyp ERR! command "/Users/user1/.nvm/versions/node/v19.6.0/bin/node" "/Users/user1/.nvm/versions/node/v19.6.0/lib/node_modules/npm/node_modules/npm-lifecycle/node_modules/node-gyp/bin/node-gyp.js" "build" "--fallback-to-build" "--module=/Users/user1/Projects/project1/frontend/node_modules/fsevents/lib/binding/Release/node-v111-darwin-arm64/fse.node" "--module_name=fse" "--module_path=/Users/user1/Projects/project1/frontend/node_modules/fsevents/lib/binding/Release/node-v111-darwin-arm64" "--napi_version=8" "--node_abi_napi=napi" "--napi_build_version=0" "--node_napi_label=node-v111"
gyp ERR! cwd /Users/user1/Projects/project1/frontend/node_modules/fsevents
gyp ERR! node -v v19.6.0
gyp ERR! node-gyp -v v9.3.1
gyp ERR! not ok 
node-pre-gyp ERR! build error 
node-pre-gyp ERR! stack Error: Failed to execute '/Users/user1/.nvm/versions/node/v19.6.0/bin/node /Users/user1/.nvm/versions/node/v19.6.0/lib/node_modules/npm/node_modules/npm-lifecycle/node_modules/node-gyp/bin/node-gyp.js build --fallback-to-build --module=/Users/user1/Projects/project1/frontend/node_modules/fsevents/lib/binding/Release/node-v111-darwin-arm64/fse.node --module_name=fse --module_path=/Users/user1/Projects/project1/frontend/node_modules/fsevents/lib/binding/Release/node-v111-darwin-arm64 --napi_version=8 --node_abi_napi=napi --napi_build_version=0 --node_napi_label=node-v111' (1)
node-pre-gyp ERR! stack     at ChildProcess.<anonymous> (/Users/user1/Projects/project1/frontend/node_modules/fsevents/node_modules/node-pre-gyp/lib/util/compile.js:83:29)
node-pre-gyp ERR! stack     at ChildProcess.emit (node:events:512:28)
node-pre-gyp ERR! stack     at maybeClose (node:internal/child_process:1098:16)
node-pre-gyp ERR! stack     at ChildProcess._handle.onexit (node:internal/child_process:304:5)
node-pre-gyp ERR! System Darwin 22.1.0
node-pre-gyp ERR! command "/Users/user1/.nvm/versions/node/v19.6.0/bin/node" "/Users/user1/Projects/project1/frontend/node_modules/fsevents/node_modules/node-pre-gyp/bin/node-pre-gyp" "install" "--fallback-to-build"
node-pre-gyp ERR! cwd /Users/user1/Projects/project1/frontend/node_modules/fsevents
node-pre-gyp ERR! node -v v19.6.0
node-pre-gyp ERR! node-pre-gyp -v v0.12.0
node-pre-gyp ERR! not ok 
Failed to execute '/Users/user1/.nvm/versions/node/v19.6.0/bin/node /Users/user1/.nvm/versions/node/v19.6.0/lib/node_modules/npm/node_modules/npm-lifecycle/node_modules/node-gyp/bin/node-gyp.js build --fallback-to-build --module=/Users/user1/Projects/project1/frontend/node_modules/fsevents/lib/binding/Release/node-v111-darwin-arm64/fse.node --module_name=fse --module_path=/Users/user1/Projects/project1/frontend/node_modules/fsevents/lib/binding/Release/node-v111-darwin-arm64 --napi_version=8 --node_abi_napi=napi --napi_build_version=0 --node_napi_label=node-v111' (1)
解决方案

1. 降级Node版本到兼容旧依赖的版本

fibers@5.0.3和fsevents@1.2.9均为旧包,不支持Node.js v19这类高版本。建议用nvm切换到Node.js v16或v14(对旧Vue项目兼容性最佳):

  • 安装指定版本:nvm install 16.20.2
  • 切换版本:nvm use 16.20.2
  • 重新执行npm install

2. 用npm-force-resolutions强制升级依赖版本

若不想降级Node,可通过npm-force-resolutions强制升级fibers和fsevents到兼容Node v19的版本:

  1. 在package.json中添加配置:
    "resolutions": {
      "fibers": ">=5.0.4",
      "fsevents": ">=2.3.2"
    },
    "scripts": {
      "preinstall": "npx npm-force-resolutions"
    }
    
  2. 删除现有依赖文件:
    rm -rf node_modules package-lock.json
    
  3. 重新执行npm install

3. 开启Rosetta 2兼容模式(针对M2 Pro芯片)

M系列芯片为ARM架构,部分旧包无ARM编译的二进制文件,开启Rosetta 2后以x86模式运行终端:

  • 找到终端应用,右键选择「显示简介」,勾选「使用Rosetta打开」
  • 重启终端,重新执行npm install

4. 更新node-gyp到最新版本

旧版node-gyp可能不兼容高版本Node,手动更新:

npm install -g node-gyp@latest

执行配置与重建:

node-gyp configure
node-gyp rebuild

再重新运行npm install

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.31 10:41:31