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

启用Next.js SSR时Amplify报类型错误,求解决方法

解决Amplify SSR配置的TypeScript错误及文件缺失问题

一、先确认Amplify CLI版本

  • 打开终端运行 amplify --version,如果版本低于v10,升级到最新版:npm install -g @aws-amplify/cli
  • 升级后重新执行 amplify pull,会自动生成amplify_outputs.json文件(适用于Amplify托管的项目)

二、修正SSR配置的TypeScript错误

方式1:类型断言临时绕过检查

如果暂时不想调整配置结构,可以用类型断言跳过TypeScript的类型校验:

Amplify.configure({ ...awsExports, ssr: true } as any);

方式2:使用Amplify v6+的标准SSR配置(推荐)

Amplify v6及以上版本已移除configure中的ssr属性,启用SSR的正确方式是在服务器端使用withSSRContext:

// 服务器端示例(比如Next.js的getServerSideProps)
import { withSSRContext } from 'aws-amplify';

export async function getServerSideProps(context) {
  const { Auth } = withSSRContext(context);
  try {
    const user = await Auth.currentAuthenticatedUser();
    return { props: { user: JSON.parse(JSON.stringify(user)) } };
  } catch (err) {
    return { props: { user: null } };
  }
}

客户端配置保持原样,无需添加ssr: true:

import Amplify from 'aws-amplify';
import awsExports from './aws-exports';

Amplify.configure(awsExports);

方式3:手动创建amplify_outputs.json

如果升级CLI后仍未生成该文件,可手动创建,替换为你的实际资源信息:

{
  "auth": {
    "userPoolId": "你的用户池ID",
    "userPoolWebClientId": "你的客户端ID",
    "region": "你的服务区域"
  },
  "api": {
    "rest": {
      "endpoint": "你的API端点地址"
    }
  }
}

之后导入该文件完成配置:

import outputs from './amplify_outputs.json';
Amplify.configure(outputs);

三、适配教程的版本差异

你跟随的YouTube教程大概率使用的是Amplify v5及以下旧版本,而当前安装的是v6+新版本,两者API和配置逻辑存在差异:

  • 旧版本允许在configure中直接添加ssr: true,新版已移除该属性
  • 新版推荐通过withSSRContext处理服务器端身份验证、数据请求等逻辑

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.21 03:59:55