#22056·webpack

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