Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

在文件内容没有变化的情况下,每次打包出来的构建产物javascript文件的hash值都不一致 #27276

Closed
DecadeFarewell opened this issue May 20, 2024 · 5 comments

Comments

@DecadeFarewell
Copy link

Environment

Operating System: Linux
Node Version: v20.13.0
Nuxt Version: ^3.11.1
CLI Version: 3.11.1
Nitro Version: 2.9.5
Package Manager: npm@10.5.2
Builder: -
Build Modules: ["@pinia/nuxt", "@element-plus/nuxt", "@vite-pwa/nuxt"]

Reproduction

Describe the bug

在文件内容没有变化的情况下,每次执行nuxt build,打包出来的js文件hash值都不一致,这导致我在使用docker进行多实例部署时,每个镜像中的构建产物名称不同,用户在请求js资源时,部分资源出现请求404的情况。

企业微信截图_520b0515-691e-4383-904d-6f95669464ab

企业微信截图_581c9e05-599b-4f42-a1db-565f3446d589

Additional context

No response

Logs

No response

@DecadeFarewell
Copy link
Author

DecadeFarewell commented May 20, 2024

现在我可以通过更改构建和发布流程来解决这个问题,我必须在jenkins流水线中完成项目的打包流程,然后在docker镜像启动时运行命令: CMD ["npm", "run", "app"], 但是这样我无法在docker镜像中注入相关的环境变量以供构建过程中使用,因为构建过程已经结束了

package.json:
...
"scripts": {
"build": "nuxt build",
"dev": "nuxt dev --host",
"start": "node ./.output/server/index.mjs",
"app": "pm2 start npm --no-daemon --name portal -- run start",
"generate": "nuxt generate",
"preview": "nuxt preview",
"postinstall": "nuxt prepare"
},

@markthree
Copy link

markthree commented May 20, 2024

This seems to be a rollup problem, for which there is no good solution at the moment.

But maybe in the future we can solve it with nuxt-build-cache

@warflash
Copy link
Member

#27258 looks like your issue might be solved by this?

@yxw007
Copy link

yxw007 commented May 21, 2024

现在我可以通过更改构建和发布流程来解决这个问题,我必须在jenkins流水线中完成项目的打包流程,然后在docker镜像启动时运行命令: CMD ["npm", "run", "app"], 但是这样我无法在docker镜像中注入相关的环境变量以供构建过程中使用,因为构建过程已经结束了

package.json: ... "scripts": { "build": "nuxt build", "dev": "nuxt dev --host", "start": "node ./.output/server/index.mjs", "app": "pm2 start npm --no-daemon --name portal -- run start", "generate": "nuxt generate", "preview": "nuxt preview", "postinstall": "nuxt prepare" },

告诉你一个解决方案

  1. jenkins 打包时,有个选项:将环境变量注入至构建过程(配置环境变量)
  2. 在jenkins 打包前执行一个shell,将注入的环境变量生成一个.env
  3. docker 打包项目时,将此.env copy 进app中
  4. docker 运行时加载.env 配置文件即可(在Dockerfile 中添加如下启动命令)
# lock the startup env config file 
CMD ["npm","start","--env-file",".env"]

@danielroe
Copy link
Member

As @warflash spotted, this issue is resolved in #27258 in the nightly release, or in the next release.

Let me know if not and I'll reopen.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

5 participants