解决 Next.js build 完成后卡住的问题

💡 原文中文,约3200字,阅读约需8分钟。
📝

内容提要

在构建 Next.js 项目时遇到卡住的问题,原因是 Next.js 的 Telemetry。解决方法是执行 `npx next telemetry disable` 以禁用 Telemetry。此外,由于网络问题,HTTP_PROXY 和 HTTPS_PROXY 对 Next.js 无效,建议使用 TUN 或 WireGuard 等全局联网方式。

🎯

关键要点

  • 在执行 Next.js 项目的 npm run build 后,构建过程卡住,显示在 Finalizing page optimization 后 bash 提示符未出现。

  • 通过使用 strace 和 ss 命令,发现问题与 Next.js 的 Telemetry 有关。

  • 解决方法是执行 npx next telemetry disable 来禁用 Telemetry。

  • HTTP_PROXY 和 HTTPS_PROXY 对 Next.js 无效,建议使用 TUN 或 WireGuard 等全局联网方式。

  • 由于 Vercel 在中国大陆被阻断,可能导致构建过程中的网络问题。

🔎

延伸解读

Telemetry 的影响

Next.js 的 Telemetry 功能在某些情况下可能导致构建过程卡住,尤其是在网络不稳定的环境中。禁用 Telemetry 可以有效避免这一问题,确保构建流程顺利完成。开发者在遇到类似问题时,可以优先考虑这一解决方案。

网络配置的重要性

在构建 Next.js 项目时,HTTP_PROXY 和 HTTPS_PROXY 设置对其并无效,可能导致网络请求失败。因此,使用 TUN 或 WireGuard 等全局联网方式是更可靠的选择。开发者应关注网络配置,以确保构建过程不受影响。

Vercel 在中国的限制

由于 Vercel 在中国大陆的访问限制,开发者在使用 Next.js 时可能会遇到网络问题。这种情况在构建过程中尤为明显,建议开发者提前做好网络环境的评估和调整,以避免不必要的构建中断。

延伸问答

为什么在构建 Next.js 项目时会卡住?

构建过程卡住的原因是 Next.js 的 Telemetry 导致的。

如何解决 Next.js 构建卡住的问题?

可以通过执行 `npx next telemetry disable` 来禁用 Telemetry,从而解决卡住的问题。

在中国大陆使用 Vercel 时会遇到什么问题?

在中国大陆使用 Vercel 时,可能会因为网络问题导致构建过程卡住。

HTTP_PROXY 和 HTTPS_PROXY 对 Next.js 有效吗?

HTTP_PROXY 和 HTTPS_PROXY 对 Next.js 无效,建议使用 TUN 或 WireGuard 等全局联网方式。

如何使用 strace 和 ss 命令分析 Next.js 构建过程?

可以使用 `strace npx next build` 来查看系统调用,并使用 `ss -tn` 查看 TCP 连接状态。

Next.js 的 Telemetry 是什么?

Telemetry 是 Next.js 的一个功能,用于收集使用数据,但在某些情况下可能导致构建卡住。

🏷️

标签

➡️

继续阅读