AWS Amplify全栈应用Apollo Client配置报错求助
解决Apollo Client配置报错及AWS AppSync客户端的其他生成方式
一、修复当前Apollo Client配置的报错
你的代码存在语法缺失导致连锁报错:
- ESLint解析错误:
AppSyncProvider组件的箭头函数返回值括号未闭合,触发Parsing error: '>' expected。修复方法是补上闭合括号和分号:const AppSyncProvider: React.FC<{ children: ReactNode }> = ({ children }) => ( <ApolloProvider client={client}> {children} </ApolloProvider> ); // 补充闭合括号与分号 - TypeScript误判:上述语法错误会让TS解析器混乱,误将
ApolloProvider(React组件实例)当作类型使用,修复语法后ts(2749)错误会自动消失。
额外注意:确保@apollo/client与React版本兼容(推荐@apollo/client@3.x搭配React 16.8+),避免版本不兼容引发的类型问题。
二、其他生成AppSync客户端的方法
除了Apollo Client,还有两种实用方案:
1. 使用AWS Amplify官方API模块
无需额外配置Apollo,直接用Amplify内置工具调用GraphQL,可复用Amplify生成的GraphQL操作代码:
import { API, graphqlOperation } from 'aws-amplify'; import { listTodos } from './graphql/queries'; // Amplify自动生成的查询语句 // 查询示例 const fetchTodos = async () => { try { const response = await API.graphql(graphqlOperation(listTodos)); console.log(response.data.listTodos.items); } catch (err) { console.error(err); } };
2. 使用AWS AppSync官方客户端
安装@aws-appsync/client依赖后,初始化AppSync专属客户端,针对AppSync特性(实时订阅、凭证自动刷新等)做了优化:
import { createAppSyncClient } from '@aws-appsync/client'; import awsconfig from './aws-exports'; const appSyncClient = createAppSyncClient({ url: awsconfig.aws_appsync_graphqlEndpoint, region: awsconfig.aws_project_region, authMode: 'API_KEY', // 根据你的认证方式调整,如AMAZON_COGNITO_USER_POOLS authToken: awsconfig.aws_appsync_apiKey, // 对应authMode的凭证,如Cognito用户token }); // 查询示例 const fetchData = async () => { const result = await appSyncClient.query({ query: /* GraphQL */` query ListTodos { listTodos { items { id name } } } ` }); console.log(result.data); };
内容的提问来源于stack exchange,提问作者S-NaN-WaR
相关产品推荐
相关产品推荐

