如何解决用阿里云效流水线持续集成部署Nuxt静态应用时流程卡住,进行不下去的问题

我有一个用Nuxt搭建的前端应用,部署时是用npm run generate命令生成静态页,然后上传到服务器上的指定目录来完成部署。

之前是写了一个shell脚本,用rsync命令实现的上传,个人用起来倒也比较方便,但是因为涉及到服务器登陆密码之类的敏感信息,不太方便分享给别人,想让其他人也能部署的话,就不太好解决。

后来接触到了云效流水线,感觉这是个好工具,配置好了之后,点一下运行按钮就能完成部署,给相关人员分配权限后,大家就都能部署了。

但是在配置Node.js构建这一步时,遇到了问题。构建一直在运行,过很长时间也完成不了,只能手动取消才能结束。

查了很多资料也没找到头绪,后来发现本地运行npm run generate命令后,并不会结束进程,而是在终端里一直停在那儿,按Ctrl + C后才会退出。

一下子明白了为什么在流水线里构建时会卡住了,是因为命令执行到这一步之后,没有结束,导致进程一直等待,后续的命令无法执行。

找到原因之后,就好办了。解决方案也比较直接,就是在nuxt.config.ts里通过生命周期钩子来结束进程。遗憾的是Nuxt没有提供类似"generate:done"的钩子,"prerender:routes"是最接近生成完成阶段的一个钩子,所以只能用它,再加一下延时,来实现生成静态页完成后,退出进程的效果。

代码如下:

TypeScript 复制代码
  hooks: {
    /**
     * 生成静态页后,退出进程,以防止阻断持续集成流水线的执行
     * 
     * nuxt未提供类似"generate:done"的钩子,
     * "prerender:routes"是最接近生成完成阶段的一个钩子,
     * 所以只能用它,再加一下延时,来实现生成静态页完成后,退出进程的效果
     */
    'prerender:routes': () => {
      setTimeout(() => {
        process.exit(0)
      }, 10000)
    },
  },

代码修改如图所示:

加上这个处理之后,Node.js构建任务就能正常执行了,整个流水线也能跑通了。

部署从此变的轻松加愉快,可谓一劳永逸地解决了问题。

本次分享就是这样,希望对您有所帮助。

相关推荐
Awu122718 分钟前
⚡从零开发 Agent CLI(五)实现一个可治理、可扩展的工具系统
前端·人工智能·claude
咪库咪库咪41 分钟前
Vue3-生命周期
前端
莪_幻尘1 小时前
你的 AI Skill 越多越蠢?Token 上下文爆炸的求生指南
前端·ai编程
lichenyang4532 小时前
从 has.echo 到异步 API 注册表:一次 ASCF API 回调不触发的排查复盘
前端
林瞅瞅2 小时前
Nuxt3 项目部署 Nginx 防盗链后特定 JS 文件 403 问题修复方案
前端
kyriewen2 小时前
别再每次都 Google 了:我整理了前端日常最常踩的 10 个 Git 坑,附速查表
前端·javascript·git
一颗奇趣蛋2 小时前
Web 视频开发完全指南:从入门到精通
前端
非洲农业不发达3 小时前
windows终端体验大升级,让你拥有macos级别的美化
前端·后端
妙码生花3 小时前
从 PHP 到 AI + Golang,程序员自救转型手记(十七):登录接口完善,登录页接口整合,解决跨域
前端·后端·ai编程
唐诗3 小时前
改 3 行配置,我的 Tauri dev 冷启动从 100 秒干到 4 秒
前端·客户端