grep -rn '\\\\' src/ | wc -l
node -e "console.log(require('path').posix.join('..','utils','request'))"
npx vite build
Windows 上生成的 12 个 import 写成 ..\..\utils\request,Linux 构建时报 Module not found,路径里的反斜杠被当成转义字符。这类现象通常不是突然出现的,往前翻半天日志能看到苗头。
追下去是这么回事:拼接路径用的是 path.join,Windows 下产出反斜杠,直接写进了源码的 import 字符串。构建机是 Linux,解析规则不同。
这次卡住的地方就在「输出路径跨平台」这一环,单独把它拎出来验证,别和其他改动混在同一次发布里。权限不要一口气开到最大,先加到够用再往上试,范围小才好收。
把复现步骤压到三条以内,交给同事也能跑出来,才算真的定位清楚。改动写完就同步给同事,下一个人踩同一个坑,成本还是你的。
验证用真实数据走一遍,测试数据太干净,边界情况根本碰不到。
处理上按这个顺序:源码里的路径统一用正斜杠 拼接后替换反斜杠;或者用 path.posix.join 专门处理 import 路径;生成后在 Linux 容器里跑一次构建;在 CI 里加 Windows 和 Linux 两套任务。
确认没问题再收工,两个平台生成的 import 都是正斜杠 Linux 容器里构建通过。
