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

AWS CodePipeline无法加载PHP+React Git仓库中的React前端问题

问题

我是AWS新手,给包含React前端和PHP后端的Git仓库搭建了CodePipeline:先创建了用于PHP后端的Elastic Beanstalk环境,再通过CodeBuild构建代码,最后创建CodePipeline。但访问时仅能看到PHP内容,React前端无法加载。修改React代码后,能在CodeBuild中看到对应更新,推测构建环节无问题。我的YAML构建文件如下:

version: 0.2
phases:
  install:
    # runtime-versions:
    #   nodejs: 14.11.0
    commands:
      # - echo installing node 16 
      # - curl -sL https://deb.nodesource.com/setup_16.x | bash
      # - apt install -y nodejs
      # - echo installing Yarn...
      # -  curl -sS https://dl.yarnpkg.com/debian/pubkey.gpg |  apt-key add -
      # - echo "curl -sS https://dl.yarnpkg.com/debian/ stable main"
      # - apt install --no-install-recommends yarn
  pre_build:
    commands:
      - echo Installing source NPM dependencies...
      - npm install 
  build:
    commands:
      - echo Testing ...
      # yarn test
      - echo Building ...
      - npm run build
  post_build:
    commands:
      - echo Build completed on `date`
# Include only the files required for your application to run.
artifacts:
  files:
    - "**/*"
base-directory : 'build'
    # - config.js
    # - index.js
    # - reset.js
    # - package.json
    # - node_modules/**/*
分析与解决步骤
  • 核心问题:你的CodeBuild当前只输出了React构建后的build目录内容,完全没包含PHP后端代码;同时Elastic Beanstalk作为PHP环境,需要把前端静态文件放到PHP的Web根目录下才能被正确托管。
  • 调整buildspec.yml:
    1. 取消install阶段的Node.js配置注释,确保构建环境有合适的Node版本(比如你注释的Node 16),默认环境可能没有对应版本导致构建异常。
    2. 如果React项目在仓库子目录中,先进入对应目录执行依赖安装和构建操作。
    3. 将React构建好的build目录内容复制到PHP后端的Web根目录(通常是public或htdocs),然后把所有代码(PHP+前端静态文件)作为构建产物输出。
      参考调整后的buildspec:
version: 0.2
phases:
  install:
    runtime-versions:
      nodejs: 16
      php: 8.0 # 根据你的PHP后端实际版本调整
    commands:
      - echo Installing required runtime environments...
  pre_build:
    commands:
      - echo Installing React dependencies...
      - cd react-app # 替换成你仓库中React项目的实际子目录路径
      - npm install 
  build:
    commands:
      - echo Building React app...
      - npm run build
      - echo Copying build files to PHP public directory...
      - cp -r build/* ../public/ # 假设PHP后端的Web根目录是项目根下的public文件夹
  post_build:
    commands:
      - echo Build completed on `date`
artifacts:
  files:
    - "**/*" # 输出所有文件,包括PHP代码和已放置好的前端静态文件
  • 配置Elastic Beanstalk文档根目录:进入环境配置→软件设置,把文档根目录设为/public(或者你放置前端静态文件的目录),这样访问时会优先加载React的index.html,同时PHP接口可以正常访问。
  • 验证CodePipeline部署:确认CodeBuild输出的完整代码包被部署到Elastic Beanstalk,避免只部署了前端或后端的一部分。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.08 20:40:44