You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Nuxt应用手动CLI部署Elastic Beanstalk正常,经CodePipeline部署启动失败

问题根因

该错误并非package.json文件缺失,而是Nuxt启动时的工作目录不符合预期,或CodeBuild打包产物的目录结构和Elastic Beanstalk Node.js运行环境的默认规则不匹配。

排查&解决步骤

  • 修正buildspec.yml的artifacts配置
    你当前的artifacts配置会将CodeBuild构建环境中整个工作目录的文件打包,若你的Nuxt构建产物默认存放在.output目录下,需要明确指定打包根目录,避免多余层级,同时固定依赖版本、对齐Node.js runtime版本:
    version: 0.2
    phases:
      install:
        runtime-versions:
          nodejs: 16 # 请和本地开发、EB环境的Node.js大版本保持完全一致
      build:
        commands:
          - yarn install --frozen-lockfile # 固定依赖版本,避免构建时拉取到和本地有差异的版本
          - yarn build
    artifacts:
      base-directory: '.' # 明确指定从当前构建根目录开始打包
      files:
        - '**/*'
      discard-paths: no # 保留原文件路径结构
    
  • 手动指定Elastic Beanstalk的启动工作目录
    在项目根目录新增Procfile文件(提交到GitHub仓库),明确指定启动命令的执行目录,避免EB默认规则的差异:
    web: cd /var/app/current && yarn start
    
    如果是Nuxt 3版本,也可以直接指定启动入口避免路径解析问题:
    web: node /var/app/current/.output/server/index.mjs
    
  • 验证版本一致性
    确认CodeBuild使用的Node.js runtime版本、Elastic Beanstalk环境的Node.js版本、本地开发的Node.js版本三者完全一致,大版本差异会导致模块加载路径逻辑变化,触发该错误。
  • 排查隐藏文件缺失问题
    之前对比zip包时可能忽略了.开头的隐藏文件(比如.npmrc、.yarnrc、.env等),可在buildspec的build阶段加一行ls -la打印构建目录文件,在CodeBuild日志中确认package.json存在于构建根目录,且所有必要隐藏文件都被打包到产物中。

内容的提问来源于stack exchange,提问作者zcserei

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.23 14:36:02