新增七个预生成分类路由、工具卡片网格与空状态。启用侧栏分类导航和当前分类选中态,修复 Windows 静态导出 RSC 路径并补充产物验证,保持静态导出与安全外链约束。 Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
1.7 KiB
1.7 KiB
Next.js Windows 静态导出补丁
原因与范围
next@16.3.3 的静态导出器将 path.relative() 产生的文件系统路径直接用于 RSC segment 文件名编码。Windows 的反斜杠不会被编码器转换为点号,导致浏览器请求扁平文件名、实际文件却落在嵌套目录。
- 上游问题:https://github.com/vercel/next.js/issues/85374
- Windows 根因复现:https://github.com/vercel/next.js/issues/92339
- 2026-09-13 核对:
16.3.5的相应导出逻辑仍未包含路径标准化。
补丁只修改导出器的 CommonJS / ESM 两份入口,在文件名编码前用系统路径分隔符拆分并以 / 连接。读取源文件仍使用原始文件系统路径。Linux/macOS 的 / 路径保持不变,浏览器运行时代码不变。
安装与验证
补丁通过 pnpm-workspace.yaml 的精确版本 patchedDependencies 和锁文件登记,正常安装会自动应用,无需手动编辑 node_modules。
corepack pnpm install --frozen-lockfile
corepack pnpm build
corepack pnpm verify:export
verify:export 只读取产物:检查首页、全部分类页和 404,并将每个源 RSC segment 与浏览器所需扁平路径下的导出文件逐字节比较。它不会复制、移动或重命名 out/ 文件。部署前还需在真实静态服务器上验证预取和客户端导航。
后续升级
补丁仅绑定 next@16.3.3,不会自动迁移到其他版本。升级 Next.js 时必须重新检查上游导出实现、运行构建与 verify:export,再进行静态浏览器验收;不能仅以 next build 成功判断问题已修复。
上游修复并验收通过后,使用 pnpm 的补丁移除命令清理对应登记和补丁文件,更新锁文件,保留产物回归检查。