如何在AWS Elastic Beanstalk上部署TypeScript Web应用并实现自动构建启动
方案1:在GitHub流水线中完成构建再部署(更推荐)
该方案将构建过程放在CI侧执行,可降低EB实例运行时开销,同时方便提前排查构建错误
- 修改你的GitHub Actions workflow配置文件,在部署到EB的步骤前新增依赖安装、TypeScript构建步骤,示例如下:
# 前置构建逻辑,需要放在部署步骤之前 - name: 安装项目依赖 run: npm ci # 注:使用npm ci要求仓库中存在package-lock.json文件 - name: 编译TypeScript源码 run: npm run build
- 确保
package.json中已配置正确的构建命令:"build": "tsc",执行后会自动生成dist目录,该目录会随部署包一起上传到EB,无需提交到Git仓库 - 启动命令配置为
"start": "node dist/你的入口文件.js"即可
方案2:配置EB实例部署时自动构建
该方案让构建过程在EB服务器侧执行,无需修改现有CI流水线配置
- 在项目根目录创建
.ebextensions文件夹,新增01_typescript_build.config文件,写入以下配置:
container_commands: 01_install_production_deps: command: "npm install --only=production" cwd: "/var/app/staging" 02_compile_ts: command: "npm run build" cwd: "/var/app/staging"
- 两种方式解决EB实例上tsc命令找不到的问题:
- 把typescript依赖加入package.json的
dependencies字段 - 把build命令修改为
"build": "npx tsc",运行时临时调用tsc
- 把typescript依赖加入package.json的
- 确保启动命令指向dist目录的编译产物:
"start": "node dist/你的入口文件.js"
常见故障排查
- 确认
tsconfig.json中outDir参数值为./dist、rootDir参数值为./dev,路径配置错误会导致编译产物输出异常 - 确保EB环境使用的Node.js版本和本地开发环境一致,避免出现兼容性报错
- 如部署失败可登录EB实例查看
/var/log/eb-engine.log日志,定位具体的构建、启动错误原因
内容的提问来源于stack exchange,提问作者Rituraj Phukan
相关产品推荐
相关产品推荐

