启用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
相关产品推荐
相关产品推荐

