首页·报错信息

node-gyp · npm

报错原文

gyp ERR! build error

这是什么意思

某个依赖里含有 C 或 C++ 代码,安装时必须在你的机器上编译,而这次编译失败了——node-gyp 需要编译器和 python。这发生在完全没装编译工具链的时候,或者这个包比你的 node 老、头文件已经对不上的时候。装上工具链:macOS 上用 xcode-select --install 装命令行工具,Debian 或 Ubuntu 上装 build-essential 和 python3,Windows 上装 Visual Studio 的 C++ 工作负载。如果这个包的新版本为你的 node 提供了预编译的二进制,升级这个包比修编译环境快得多。

怎么修

这个没有一行命令能解决。说明里写了该看哪里。

来自
node-gyp
npm
20

npm 的原因写在第一行 code XXXX 里,而不是最后那六行 npm ERR!;如果失败来自依赖树或原生编译而不是你自己的代码,删掉 node_modules 重新安装就能解决一半。

怎么读报错

  • 从第一行往下读。越往下越是工具内部的事,起因通常写在最上面。
  • 有文件名和行号就从那里查——不是栈顶那一帧,而是最上面那条提到你自己写的文件的行。
  • 把报错原文照样去搜,但先去掉你自己的路径和变量名,正是那些让搜索匹配不上。
  • 同一种情况在不同版本里措辞不同。结果不对头,就把版本号一起加进查询。
  • 粘贴修法之前,先确认它会丢掉什么。这里面有些是不能撤回的。

常见问题

Q. “gyp ERR! build error” 是什么意思?

某个依赖里含有 C 或 C++ 代码,安装时必须在你的机器上编译,而这次编译失败了——node-gyp 需要编译器和 python。这发生在完全没装编译工具链的时候,或者这个包比你的 node 老、头文件已经对不上的时候。装上工具链:macOS 上用 xcode-select --install 装命令行工具,Debian 或 Ubuntu 上装 build-essential 和 python3,Windows 上装 Visual Studio 的 C++ 工作负载。如果这个包的新版本为你的 node 提供了预编译的二进制,升级这个包比修编译环境快得多。

Q. 怎么修?

没有一行命令能解决。上面的说明写了该看哪里。

Q. 这是哪个工具报的?

node-gyp。它属于npm,报错原文有 4 个词。

相关报错