ESM 输出将哈希后的分块文件名嵌入导入模块中,从而破坏长期缓存(无可选退出)
作者: Anonym-tsk创建于 2026年9月11日更新于 2026年9月14日
标签area: configarea: runtimeneeds: reproductionregression
问题报告 ** 当前行为是什么? ** 自 5.110 以来,ESM 输出在每个动态导入位置(RuntimeTemplate.analyzableChunkImport、__webpack_require__.ei)附近烘焙了一个字面的 import("<chunk file>"):
// 5.104.1 — 仅有 chunk id; 运行时会从映射中解析文件名
n.e(4458, "high");
// 5.110.3 — 经过哈希的文件名被烘焙到导入模块中
s.ei(4458, () => import("/static/js/ton.2413d995a4.js"))
由于文件名包含 [contenthash],导入模块的内容现在依赖于导入的 chunk 的内容,并且该依赖会沿着导入图传播到初始波中。 chunk-id → 文件名 的映射仍然存在于运行时 chunk 中,因此哈希现在被存储了两次。
内容来源: webpack/webpack