下一个 JS 清单文件位置

Next JS manifest files location

当前配置:k8s 上的 NextJS 在 Dockerfile 和入口点脚本中有多个 pods、运行 yarn build。 从这些路径请求的下一个 JS 清单文件:

domain.com/_next/static/p3MARTW1_07ma-QzuXQel/_buildManifest.js
domain.com/_next/static/p3MARTW1_07ma-QzuXQel/_middlewareManifest.js

其中 p3MARTW1_07ma-QzuXQel 是 pod 中的一个文件夹,并且由于从入口点进行的第二次构建,每个 pod 都不同。显然,当 LB 命中不同的 pod 时,它没有找到。

我找不到有关这些文件的任何信息,也找不到我们如何使此文件夹名称在不同版本中相同。

清单文件(和其他静态文件)在其路径中使用生成的构建 ID。您可以在 next.config.js 文件中配置此构建 ID,使用相同构建的所有 pods 都将相同。

module.exports = {
  generateBuildId: async () => {
    // Return custom build ID, like the latest git commit hash
    return 'my-build-id'
  }
}

来自 Configuring the Build ID 文档:

Next.js uses a constant id generated at build time to identify which version of your application is being served. This can cause problems in multi-server deployments when next build is ran on every server. In order to keep a static build id between builds you can provide your own build id.

Open next.config.js and add the generateBuildId function