Astro 2.0在AWS Amplify部署SSR遇404错误及部署失败求助
解决AWS Amplify部署Astro 2.0 SSR的404问题
问题根源
你的构建配置存在两个核心错误:
- postBuild阶段执行
npm run server完全错误:这个命令是用来在本地启动生产服务器的,Amplify的构建阶段只负责生成部署产物,不需要启动服务——该命令会持续运行导致构建流程卡住,最终部署的产物不符合要求。 - 未配置Amplify的SSR启动命令:Astro SSR是Node.js服务,Amplify需要明确知道如何启动你的服务才能正确处理请求,否则会返回404。
修正步骤
1. 调整Amplify构建配置(amplify.yml)
替换原配置为以下内容:
frontend: phases: preBuild: commands: - nvm install 18 - nvm use 18 - npm ci build: commands: - npm run build artifacts: baseDirectory: dist files: - '**/*' cache: paths: - node_modules/**/* server: commands: - node dist/server/entry.mjs port: 3000
- 添加
nvm install 18和nvm use 18:确保使用Astro 2.0兼容的Node.js版本(要求16+,推荐18)。 - 删除postBuild阶段的
npm run server:避免构建流程异常挂起。 - 添加
server区块:告诉Amplify启动Node.js服务的命令和端口(Astro默认使用3000端口)。
2. 确认Astro配置正确
检查你的astro.config.mjs,确保输出类型设置为server:
import { defineConfig } from 'astro/config'; export default defineConfig({ output: 'server', });
3. 验证本地构建产物
本地执行npm run build后,确认dist/server/entry.mjs文件存在——这是Astro SSR的服务入口文件,Amplify通过该文件启动服务。
额外注意事项
如果Amplify控制台仍返回404,进入项目的「部署设置」→「高级设置」,确认启动命令是否为node dist/server/entry.mjs。构建完成后,Amplify会自动启动你的Node.js服务,无需手动执行启动命令。
内容的提问来源于stack exchange,提问作者Marcos
相关产品推荐
相关产品推荐

