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

求助:在AWS Amplify部署Svelte-Kit项目后出现404错误

解决Svelte-Kit部署到AWS Amplify的404问题

核心原因

你用的svelte-js/adapter-node适配器生成的是Node.js后端服务,不是静态HTML文件,而AWS Amplify默认按静态网站托管处理,找不到index.html就返回404。要部署动态Svelte-Kit项目,得让Amplify运行这个Node服务,而不是当成静态文件托管。

具体解决步骤

1. 确认本地构建产物正常

本地执行npm run build后,检查build目录下是否有index.js(Node服务入口文件)和相关依赖文件,确保本地运行node build/index.js能正常启动服务,访问localhost:3000验证功能正常。

2. 配置Amplify的构建与启动逻辑

在Amplify控制台的构建设置里,修改amplify.yml配置,让Amplify构建后启动Node服务:

version: 1
frontend:
  phases:
    preBuild:
      commands:
        - npm install
    build:
      commands:
        - npm run build
  artifacts:
    baseDirectory: build
    files:
      - '**/*'
  cache:
    paths:
      - node_modules/**/*
backend:
  phases:
    build:
      commands:
        - node build/index.js

或者直接在Amplify控制台的部署设置中,找到「启动命令」输入框,填入node build/index.js。

3. 关闭静态托管的重定向规则

进入Amplify控制台的托管选项卡,关掉静态网站托管相关的重定向规则——因为现在运行的是动态服务,不需要静态路由的自动重写逻辑。

4. 可选:改用Amplify专用适配器

如果不想维护Node服务,也可以用专门适配Amplify的svelte-adapter-aws-amplify,它会生成适配Amplify托管的产物,同时支持SSR:

  • 安装适配器:npm install svelte-adapter-aws-amplify --save-dev
  • 修改svelte.config.js:
import adapter from 'svelte-adapter-aws-amplify';

export default {
  kit: {
    adapter: adapter({
      out: 'build',
      domain: '你的Amplify域名.amplifyapp.com'
    })
  }
};

重新构建部署后,Amplify就能正确识别产物,不会再报找不到index.html的警告。

排查要点

  • 检查Amplify构建日志,确认Node服务启动成功(用adapter-node时),或静态产物生成正常(用专用适配器时)
  • 确认Amplify的IAM角色有足够权限运行Node服务
  • 验证本地构建产物和Amplify下载的产物完全一致

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.08 07:05:33