@
wangtian2020 #22 这就得问 noble 为什么不采用预编译或者 rs-napi 或者 wasm 而使用 node-gyp 去现场编译了,当然大部分项目是因为历史包袱甩不掉,还能更新就已经很不错了。node-gyp 依赖 python 运行时环境,本机上找到什么版本就用什么,毕竟重新下载一个指定的 python 版本去构建太蛋疼了,真要这样说不定有些项目 npm install 吭哧吭哧下好几个不同版本 python 下来,而 python 运行时对基础环境有要求,node-gyp 对 python 版本有要求,Node.js -> node-gyp -> Python -> C++ 编译器 -> 核心系统库 -> 目标产物,这是一个十分不稳定且脆弱的流程,无论发生什么都可以算预期行为。
真要说起来这也是 nodejs 的锅,因为原生模块性能比 js 好,那注重性能的都会去写原生,但是 c++产物无法跨平台运行,你在 A 平台写好了,别的平台也想用但没有精力去适配,就有了 gyp ,就有了封装专注 nodejs 的 node-gyp ,就有了 node-sass 等包带来的一地鸡毛。