Node v20.12.2安装node-sass 9.0.0时出现v8命名空间错误
问题描述
使用环境:
- Node - v20.12.2
- node-sass - 9.0.0
- macOS
尝试安装最新版node-sass时出现如下错误:
../../nan/nan_callbacks.h:55:23: error: no member named 'AccessorSignature' in namespace 'v8' typedef v8::Local<v8::AccessorSignature> Sig; ~~~~^ 1 error generated. make: *** [Release/obj.target/binding/src/binding.o] Error 1 gyp ERR! build error gyp ERR! stack Error: `make` failed with exit code: 2 gyp ERR! stack at ChildProcess.onExit (/Users/chamara/Documents/hotel manager/hotel-manager/node_modules/node-gyp/lib/build.js:194:23) gyp ERR! stack at ChildProcess.emit (node:events:518:28) gyp ERR! stack at ChildProcess._handle.onexit (node:internal/child_process:294:12) gyp ERR! System Darwin 23.3.0 gyp ERR! command "/Users/chamara/.nvm/versions/node/v20.12.2/bin/node" "/Users/chamara/Documents/hotel manager/hotel-manager/node_modules/.bin/node-gyp" "rebuild" gyp ERR! cwd /Users/chamara/Documents/hotel manager/hotel-manager/node_modules/snappy
解决办法
- 替换为官方推荐的sass包
node-sass已停止维护,官方建议用sass(即dart-sass)替代,完全兼容原有SCSS语法,且支持高版本Node:
- 卸载node-sass:
npm uninstall node-sass - 安装sass:
npm install sass
- 降级Node版本(若坚持使用node-sass)
node-sass 9.0.0与Node v20存在兼容性问题,可切换到Node v18.x(LTS版本):
- 用nvm切换版本:
nvm install 18.20.2 && nvm use 18.20.2 - 删除原有依赖后重新安装:
rm -rf node_modules package-lock.json && npm install
- 排查依赖链问题
错误出在snappy包,可能是某个依赖引入了旧版nan库导致冲突,可执行npm ls nan查看依赖树,找到对应包升级或替换。
内容的提问来源于stack exchange,提问作者Muditha
相关产品推荐
相关产品推荐

