WSL执行yarn install遇ISO C++17动态异常规格错误求助
WSL环境下yarn install编译node-hid失败的解决方案
执行yarn install时,node-hid因无预编译二进制包触发本地编译,出现如下C++语法错误:
../src/HID.cc:71:5: 错误:ISO C++17不允许动态异常规格 71 | throw(JSException);
原因
node-hid旧版本代码使用了C17已废弃的动态异常声明语法,而Node.js 18+默认采用C17标准编译Addon,导致语法冲突。
解决方案1:升级node-hid到兼容版本
通过yarn的resolutions强制升级node-hid至支持C++17的版本(如>=2.1.0):
在package.json中添加:
"resolutions": { "node-hid": "^2.1.0" }
然后重新执行:
yarn install
解决方案2:强制使用C++14编译
临时设置环境变量,让node-gyp用C++14标准编译:
export CXXFLAGS="-std=c++14" yarn install
若需永久生效,可将环境变量添加到shell配置文件(如~/.bashrc):
echo 'export CXXFLAGS="-std=c++14"' >> ~/.bashrc source ~/.bashrc yarn install
解决方案3:移除不必要的依赖
检查项目依赖树,确认引入node-hid的包是否为项目必需。若无需硬件交互功能,可直接移除相关依赖,避免编译node-hid。
内容的提问来源于stack exchange,提问作者Ya.
相关产品推荐
相关产品推荐

