javascript - 错误:网络错误:url_1.URL 不是 new ApolloError 的构造函数
问题描述
我正在尝试使用 AWS iam 对 Apollo 客户端进行身份验证。
我有以下用于配置我的 Apollo 客户端的打字稿脚本
/* eslint-disable import/prefer-default-export */
/* eslint-disable import/no-mutable-exports */
import { ApolloClient } from 'apollo-client';
import { createHttpLink } from 'apollo-link-http';
import axios from 'axios';
import { aws4Interceptor } from 'aws4-axios';
import { InMemoryCache } from 'apollo-cache-inmemory';
import { buildAxiosFetch } from '@lifeomic/axios-fetch';
interface IConnection {
uri: string;
region: string;
accessKeyId: string;
secretAccessKey: string;
sessionToken: string;
}
export const initApolloClient = (connection: IConnection): ApolloClient<any> => {
let apolloClient: ApolloClient<any> = null;
const interceptor = aws4Interceptor(
{
region: connection.region,
service: 'execute-api',
},
{
accessKeyId: connection.accessKeyId,
secretAccessKey: connection.secretAccessKey,
sessionToken: connection.sessionToken,
}
);
axios.interceptors.request.use(interceptor);
console.log('Set apollo client');
apolloClient = new ApolloClient({
link: createHttpLink({
uri: connection.uri,
fetch: buildAxiosFetch(axios),
}),
cache: new InMemoryCache(),
});
return apolloClient;
};
此代码在我的后端 lambda 节点 js 项目中运行良好。但是当我尝试查询数据时,我的前端反应项目中的相同代码会导致此错误。
users-list.tsx:9 error Error: Network error: url_1.URL is not a constructor
at new ApolloError (ApolloError.ts:46)
at ObservableQuery.getCurrentResult (ObservableQuery.ts:199)
at QueryData.getQueryResult (QueryData.ts:333)
at QueryData._this.getExecuteResult (QueryData.ts:140)
at QueryData.execute (QueryData.ts:61)
at useBaseQuery.ts:63
at useDeepMemo (useDeepMemo.ts:18)
at useBaseQuery (useBaseQuery.ts:62)
at useQuery (useQuery.ts:11)
at UsersList (users-list.tsx:6)
at renderWithHooks (react-dom.development.js:14985)
at updateFunctionComponent (react-dom.development.js:17356)
at beginWork (react-dom.development.js:19063)
at beginWork$1 (react-dom.development.js:23940)
at performUnitOfWork (react-dom.development.js:22776)
at workLoopSync (react-dom.development.js:22707)
at renderRootSync (react-dom.development.js:22670)
at performSyncWorkOnRoot (react-dom.development.js:22293)
at react-dom.development.js:11327
at unstable_runWithPriority (scheduler.development.js:646)
at runWithPriority$1 (react-dom.development.js:11276)
at flushSyncCallbackQueueImpl (react-dom.development.js:11322)
at flushSyncCallbackQueue (react-dom.development.js:11309)
at scheduleUpdateOnFiber (react-dom.development.js:21893)
at dispatchAction (react-dom.development.js:16139)**strong text**
这是我用于非工作前端项目的 package.json。
这是我用于工作后端项目的 package.json。
您可以看到我使用的所有软件包的版本都是相同的。
我的代码
我创建了一个新的 react 应用程序,并在github repoyarn create react-app my-app --template typescript
中创建了我的问题的一个小演示。(repo 中没有 iam 凭据,但没有它们您仍然可以看到问题)
有人有什么主意吗;
- 什么可能导致这个问题?
- 我怎么能调试这个?
谢谢
解决方案
我解决了我的问题。
我更新了 aws4-axios
在 package.json 更改为
"aws4-axios": "^2.0.1",
推荐阅读
- r - 如何在 R 中创建分组条形图
- c# - 如何实例化字典中特定数量的项目?
- python - 聊天()缺少 1 个必需的位置参数:'id'
- php - 使用示例数据播种 wordpress 自定义帖子
- vba - 如何计算文本文件字符串长度并在 VBA 中执行检查
- single-sign-on - 成功 SSO 登录后,Jira 7 的 CAS 重定向到 Jira 登录页面
- amazon-web-services - AWS S3 和路由 53 未传播
- mysql - MySql 以毫秒为单位将 long unix 转换为时间戳
- excel - 多次随机化excel中的单列
- tensorflow - 当 fetch 包含 Operation 和 Tensor 时,tf.Session.run 如何工作?