无法将 apollo 客户端连接到 aws appsync
Cannot connect apollo client to aws appsync
我有一个使用 aws appsync 作为后端并使用 react + apollo 客户端 (v3) 作为前端的网络应用程序。但是当我尝试将 apollo 客户端连接到 appsync 时,我从库中收到一条错误消息:
./node_modules/aws-appsync-react/lib/offline-helpers.js
Module not found: Can't resolve 'react-apollo' in '/Users/mypath/web/node_modules/aws-appsync-react/lib'
这是客户端的配置:
import AWSAppSyncClient from "aws-appsync";
import AppSyncConfig from "./aws-exports";
export const apolloClient = new AWSAppSyncClient({
url: AppSyncConfig.aws_appsync_graphqlEndpoint,
region: AppSyncConfig.aws_appsync_region,
auth: {
type: AppSyncConfig.aws_appsync_authenticationType,
apiKey: AppSyncConfig.aws_appsync_apiKey,
},
});
在我的 App.ts
:
import { ApolloProvider } from "@apollo/client";
import { Rehydrated } from "aws-appsync-react";
import { apolloClient } from "./apollo";
...
<ApolloProvider client={apolloClient}>
<Rehydrated>
<MyApp />
</Rehydrated>
</ApolloProvider>
似乎是兼容性问题?
我正在使用 "@apollo/client": "^3.1.3", "aws-appsync": "^4.0.0","aws-appsync-react": "^4.0.0",
。
这是一个兼容性问题。 aws-appsync
的当前版本不支持 apollo-client
v3,请参阅此线程了解进展情况:
https://github.com/awslabs/aws-mobile-appsync-sdk-js/issues/448
最好的解决方法是:Proper way to setup AWSAppSyncClient, Apollo & React
请注意,解决方法确实使用了两个已弃用的库,但可以稍微改进为:
import { ApolloClient, ApolloLink, InMemoryCache } from "@apollo/client";
import { createAuthLink } from "aws-appsync-auth-link";
import { createHttpLink } from "apollo-link-http";
import AppSyncConfig from "./aws-exports";
const url = AppSyncConfig.aws_appsync_graphqlEndpoint;
const region = AppSyncConfig.aws_project_region;
const auth = {
type: AppSyncConfig.aws_appsync_authenticationType,
apiKey: AppSyncConfig.aws_appsync_apiKey,
};
const link = ApolloLink.from([
// @ts-ignore
createAuthLink({ url, region, auth }),
// @ts-ignore
createHttpLink({ uri: url }),
]);
const client = new ApolloClient({
link,
cache: new InMemoryCache(),
});
export default client;
我有一个使用 aws appsync 作为后端并使用 react + apollo 客户端 (v3) 作为前端的网络应用程序。但是当我尝试将 apollo 客户端连接到 appsync 时,我从库中收到一条错误消息:
./node_modules/aws-appsync-react/lib/offline-helpers.js
Module not found: Can't resolve 'react-apollo' in '/Users/mypath/web/node_modules/aws-appsync-react/lib'
这是客户端的配置:
import AWSAppSyncClient from "aws-appsync";
import AppSyncConfig from "./aws-exports";
export const apolloClient = new AWSAppSyncClient({
url: AppSyncConfig.aws_appsync_graphqlEndpoint,
region: AppSyncConfig.aws_appsync_region,
auth: {
type: AppSyncConfig.aws_appsync_authenticationType,
apiKey: AppSyncConfig.aws_appsync_apiKey,
},
});
在我的 App.ts
:
import { ApolloProvider } from "@apollo/client";
import { Rehydrated } from "aws-appsync-react";
import { apolloClient } from "./apollo";
...
<ApolloProvider client={apolloClient}>
<Rehydrated>
<MyApp />
</Rehydrated>
</ApolloProvider>
似乎是兼容性问题?
我正在使用 "@apollo/client": "^3.1.3", "aws-appsync": "^4.0.0","aws-appsync-react": "^4.0.0",
。
这是一个兼容性问题。 aws-appsync
的当前版本不支持 apollo-client
v3,请参阅此线程了解进展情况:
https://github.com/awslabs/aws-mobile-appsync-sdk-js/issues/448
最好的解决方法是:Proper way to setup AWSAppSyncClient, Apollo & React
请注意,解决方法确实使用了两个已弃用的库,但可以稍微改进为:
import { ApolloClient, ApolloLink, InMemoryCache } from "@apollo/client";
import { createAuthLink } from "aws-appsync-auth-link";
import { createHttpLink } from "apollo-link-http";
import AppSyncConfig from "./aws-exports";
const url = AppSyncConfig.aws_appsync_graphqlEndpoint;
const region = AppSyncConfig.aws_project_region;
const auth = {
type: AppSyncConfig.aws_appsync_authenticationType,
apiKey: AppSyncConfig.aws_appsync_apiKey,
};
const link = ApolloLink.from([
// @ts-ignore
createAuthLink({ url, region, auth }),
// @ts-ignore
createHttpLink({ uri: url }),
]);
const client = new ApolloClient({
link,
cache: new InMemoryCache(),
});
export default client;