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

AWS Amplify全栈应用Apollo Client配置报错求助

解决Apollo Client配置报错及AWS AppSync客户端的其他生成方式

一、修复当前Apollo Client配置的报错

你的代码存在语法缺失导致连锁报错:

  1. ESLint解析错误:AppSyncProvider组件的箭头函数返回值括号未闭合,触发Parsing error: '>' expected。修复方法是补上闭合括号和分号:
    const AppSyncProvider: React.FC<{ children: ReactNode }> = ({ children }) => (
      <ApolloProvider client={client}>
        {children}
      </ApolloProvider>
    ); // 补充闭合括号与分号
    
  2. 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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.23 05:52:40