当前位置: 首页 > news >正文

Next.js build 完成后卡住

Next.js build 完成后卡住

在这里插入图片描述

一、前言

最近一段时间,我在执行 Next.js 项目的 npm run build 之后总是卡住,显示完所有 route 之后,一直卡主,只能手动 Ctrl + C 打断构建流程

此时的构建结果可以正常被 npm run start 使用,在 Vercel 上构建也不会出现卡顿问题。

二、解决方法

退出 Next.js 的 Telemetry。

npx next telemetry disable 

返回example
在这里插入图片描述

三、原因

执行 strace npx next build,得以看到 Next.js 编译过程中所执行的系统调用。为了能将 strace 的输出和 Next.js 的输出分开,可以使用 mkfifo log 命令建立命名管道,然后执行 strace npx next build 2>log 将 stderr 重定向到管道,使用 cat < log 输出系统调用信息。

strace npx next build 最终卡在以下部分

  • First Load JS shared by all 87 kB
    ├ chunks/23-b022cbf28d88ae21.js 31.4 kB
    ├ chunks/fd9d1056-e3489de6ce1f07f6.js 53.7 kB
    └ other shared chunks (total) 1.94 kB

○ (Static) prerendered as static content
● (SSG) prerendered as static HTML (uses getStaticProps)
而 cat < log 则输出

epoll_pwait(17, [{events=EPOLLIN, data={u32=22, u64=22}}], 1024, 0, NULL, 8) = 1
read(22, “\1\0\0\0\0\0\0\0”, 1024) = 8
epoll_pwait(17, [], 1024, 0, NULL, 8) = 0
epoll_pwait(17,
epoll 系统调用通常用于网络上,因此大概是遇到了网络问题。

另外打开一个终端,输入 ss -tn,可以看到许多 Vercel IP 段的 TCP 连接:

ESTAB 0 2384
10.20.244.49:60724 76.76.21.22:443 ESTAB 0 1675 10.20.244.49:60970
76.76.21.241:443 FIN-WAIT-1 0 2015 10.20.244.49:60750 76.76.21.142:443 ESTAB 0 4851 10.20.244.49:60844
76.76.21.22:443

结合之前 Vercel 在中国大陆被阻断的事件,我大约感觉出了原因。HTTP_PROXY 和 HTTPS_PROXY 似乎对 Next.js 无效,因此需要借助 TUN 或者 WireGuard 等全局联网方式才能解决。

当然,最简单的方法就是退出 Next.js 的 Telemetry。

参考资料
Telemetry | Next.js by Vercel - The React Framework
注:这个是只有中国用户在权限比较严苛的服务器上才会遇到的问题。

相关文章:

  • JavaScript 事件处理机制详解
  • 归档重做日志archived log (明显) 比redo log重做日志文件小
  • 模型压缩(量化、剪枝、蒸馏、低秩分解)
  • Go 语言中,关于客户端初始化的最佳实践
  • day6_FlinkSQL实战
  • [代码随想录] KMP 算法 28. 找出字符串中第一个匹配项的下标 459. 重复的子字符串
  • 力扣算法ing(42/100)
  • 向量数据库学习笔记(2) —— pgvector 用法 与 最佳实践
  • 如何将 performance_schema 中的 TIMER 字段转换为日期时间
  • 【云服务器】在Linux CentOS 7上快速搭建我的世界 Minecraft 服务器搭建,并实现远程联机,详细教程
  • 基于springboot+vue的农产品电商平台
  • 【软考-架构】10.2、需求分析-获取-定义-验证-管理
  • 基于LAC拨号的L2TP VPN实验
  • stock-pandas,一个易用的talib的替代开源库。
  • Cyber Weekly #49
  • 用LLama factory时报类似Process 2504721 got signal: 1的解决方法
  • 基于javaweb的SpringBoot水果生鲜商城系统设计与实现(源码+文档+部署讲解)
  • 645.错误的集合
  • 扩散模型总结
  • resnet网络迁移到昇腾执行(OM上篇)
  • 贵州茅台一季度净利268亿元增长11.56%,系列酒营收增近两成
  • 五一假期上海地铁部分线路将延时运营,这些调整请查收
  • 成都世运会倒计时100天,中国代表团运动员规模将创新高
  • 大理杨徐邱再审上诉案宣判:驳回上诉,维持再审一审判决
  • 深圳宝安区一宗涉宅用地中止出让,起始总价86.27亿元
  • 跨海论汉|专访白馥兰:对中国农业史的兴趣,从翻译《齐民要术》开始