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

Astro 2.0在AWS Amplify部署SSR遇404错误及部署失败求助

解决AWS Amplify部署Astro 2.0 SSR的404问题

问题根源

你的构建配置存在两个核心错误:

  1. postBuild阶段执行npm run server完全错误:这个命令是用来在本地启动生产服务器的,Amplify的构建阶段只负责生成部署产物,不需要启动服务——该命令会持续运行导致构建流程卡住,最终部署的产物不符合要求。
  2. 未配置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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.02 07:55:20