安装brain.js触发node-gyp编译错误,寻求解决方案
安装brain.js时headless-gl编译失败(clang找不到文件)的解决方案
问题背景
已满足Python 3.7+、Xcode安装要求,执行npm i brain.js时失败:预编译二进制文件无法从GitHub下载,手动编译阶段clang报错找不到文件,已尝试npm rebuild无效。
错误信息
npm ERR! code 1 npm ERR! path /Users/abedin/Desktop/Node JS/Projects/Brain.js/node_modules/gl npm ERR! command failed npm ERR! command sh -c -- prebuild-install || node-gyp rebuild npm ERR! CXX(target) Release/obj.target/angle_common/angle/src/common/Float16ToFloat32.o npm ERR! CXX(target) Release/obj.target/angle_common/angle/src/common/MemoryBuffer.o npm ERR! CXX(target) Release/obj.target/angle_common/angle/src/common/angleutils.o npm ERR! CXX(target) Release/obj.target/angle_common/angle/src/common/debug.o npm ERR! CXX(target) Release/obj.target/angle_common/angle/src/common/mathutil.o npm ERR! CXX(target) Release/obj.target/angle_common/angle/src/common/string_utils.o npm ERR! CXX(target) Release/obj.target/angle_common/angle/src/common/tls.o npm ERR! CXX(target) Release/obj.target/angle_common/angle/src/common/utilities.o npm ERR! LIBTOOL-STATIC Release/angle_common.a npm ERR! COPY Release/obj/gen/angle/id/commit.h npm ERR! TOUCH Release/obj.target/angle/src/commit_id.stamp npm ERR! CXX(target) Release/obj.target/libANGLE/angle/src/common/event_tracer.o npm ERR! CXX(target) Release/obj.target/libANGLE/angle/src/libANGLE/AttributeMap.o npm ERR! CXX(target) Release/obj.target/libANGLE/angle/src/libANGLE/renderer/gl/RendererGL.o npm ERR! CXX(target) Release/obj.target/libANGLE/angle/src/libANGLE/renderer/gl/SamplerGL.o npm ERR! CXX(target) Release/obj.target/libANGLE/angle/src/libANGLE/renderer/gl/ShaderGL.o JS/Projects/Brain.js/node_modules/gl/build/config.gypi', npm ERR! gyp info spawn args '-I', npm ERR! gyp info spawn args '/Users/abedin/Desktop/Node JS/Projects/Brain.js/node_modules/node-gyp/addon.gypi', npm ERR! gyp info spawn args '-I', npm ERR! gyp info spawn args '/Users/abedin/Library/Caches/node-gyp/16.18.0/include/node/common.gypi', npm ERR! gyp info spawn args '-Dlibrary=shared_library', npm ERR! gyp info spawn args '-Dvisibility=default', npm ERR! gyp info spawn args '-Dnode_root_dir=/Users/abedin/Library/Caches/node-gyp/16.18.0', npm ERR! gyp info spawn args '-Dnode_gyp_dir=/Users/abedin/Desktop/Node JS/Projects/Brain.js/node_modules/node-gyp', npm ERR! gyp info spawn args '-Dnode_lib_file=/Users/abedin/Library/Caches/node-gyp/16.18.0/<(target_arch)/node.lib', npm ERR! gyp info spawn args '-Dmodule_root_dir=/Users/abedin/Desktop/Node JS/Projects/Brain.js/node_modules/gl', npm ERR! gyp info spawn args '-Dnode_engine=v8', npm ERR! gyp info spawn args '--depth=.', npm ERR! gyp info spawn args '--no-parallel', npm ERR! gyp info spawn args '--generator-output', npm ERR! gyp info spawn args 'build', npm ERR! gyp info spawn args '-Goutput_dir=.' npm ERR! gyp info spawn args ] npm ERR! gyp info spawn make npm ERR! gyp info spawn args [ 'BUILDTYPE=Release', '-C', 'build' ] npm ERR! ../angle/src/libANGLE/Program.cpp:2505:49: warning: instantiation of variable 'gl::GLTypeToGLenum<float>::value' required here, but no definition is available [-Wundefined- npm ERR! int yynerrs; npm ERR! ^ npm ERR! 1 warning generated. npm ERR! clang: error: no such file or directory: 'JS/Projects/Brain.js/node_modules/gl/deps/include' npm ERR! make: *** [Release/obj.target/webgl/src/native/bindings.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/abedin/Desktop/Node JS/Projects/Brain.js/node_modules/node-gyp/lib/build.js:203:23) npm ERR! gyp ERR! stack at ChildProcess.emit (node:events:513:28) npm ERR! gyp ERR! stack at Process.ChildProcess._handle.onexit (node:internal/child_process:293:12) npm ERR! gyp ERR! System Darwin 22.5.0 npm ERR! gyp ERR! command "/usr/local/bin/node" "/Users/abedin/Desktop/Node JS/Projects/Brain.js/node_modules/.bin/node-gyp" "rebuild" npm ERR! gyp ERR! cwd /Users/abedin/Desktop/Node JS/Projects/Brain.js/node_modules/gl npm ERR! gyp ERR! node -v v16.18.0 npm ERR! gyp ERR! node-gyp -v v9.4.0 npm ERR! gyp ERR! not ok
解决步骤
修复路径空格问题
项目路径包含空格(Node JS)会导致node-gyp编译时路径解析错误,将项目移动到无空格的目录:mv /Users/abedin/Desktop/Node\ JS/Projects/Brain.js /Users/abedin/Desktop/NodeJS/Projects/Brain.js之后重新执行安装命令。
清理缓存并重新安装
- 清理npm缓存:
npm cache clean --force - 删除本地依赖文件:
rm -rf node_modules package-lock.json - 重新安装:
npm install brain.js
- 清理npm缓存:
确保Xcode命令行工具完全配置
- 安装或更新Xcode命令行工具:
xcode-select --install - 指定Xcode开发路径:
xcode-select -s /Applications/Xcode.app/Contents/Developer - 同意Xcode许可协议:
sudo xcodebuild -license accept
- 安装或更新Xcode命令行工具:
跳过GPU支持,安装纯CPU版本
如果不需要GPU加速,直接安装时跳过可选依赖(headless-gl):npm install brain.js --no-optional更新node-gyp工具
全局更新node-gyp到最新版本,避免版本兼容问题:npm install -g node-gyp@latest
内容的提问来源于stack exchange,提问作者M. Fahim
相关产品推荐
相关产品推荐

