iya
每次使用apollo-link-rest时,我都会遇到相同的错误:在Apollo devtools中打开GraphiQL总是显示“ TypeError:forward is not a function”错误。 错误的全文:
{
"errors": [
{
"message": "forward is not a function",
"locations": [
"TypeError: forward is not a function\n at RestLink../node_modules/apollo-link-rest/bundle.umd.js.RestLink.request (http://localhost:3000/static/js/bundle.js:5566:24)\n at http://localhost:3000/static/js/bundle.js:5746:33\n at ApolloLink.request (http://localhost:3000/static/js/bundle.js:2602:20)\n at ApolloLink.request (http://localhost:3000/static/js/bundle.js:5745:31)\n at chrome-extension://jdkknkkbebbapilgoeccciglkfbmbnfm/dist/backend.js:1:3681\n at e.request (chrome-extension://jdkknkkbebbapilgoeccciglkfbmbnfm/dist/backend.js:1:38654)\n at chrome-extension://jdkknkkbebbapilgoeccciglkfbmbnfm/dist/backend.js:1:3681\n at e.request (chrome-extension://jdkknkkbebbapilgoeccciglkfbmbnfm/dist/backend.js:1:38421)\n at chrome-extension://jdkknkkbebbapilgoeccciglkfbmbnfm/dist/backend.js:1:3681\n at chrome-extension://jdkknkkbebbapilgoeccciglkfbmbnfm/dist/backend.js:1:38085\n at new s (chrome-extension://jdkknkkbebbapilgoeccciglkfbmbnfm/dist/backend.js:1:4855)\n at l.subscribe (chrome-extension://jdkknkkbebbapilgoeccciglkfbmbnfm/dist/backend.js:1:6185)\n at n.<anonymous> (chrome-extension://jdkknkkbebbapilgoeccciglkfbmbnfm/dist/backend.js:1:38914)\n at n.t.emit (chrome-extension://jdkknkkbebbapilgoeccciglkfbmbnfm/dist/backend.js:1:52786)\n at chrome-extension://jdkknkkbebbapilgoeccciglkfbmbnfm/dist/backend.js:1:19519\n at n (chrome-extension://jdkknkkbebbapilgoeccciglkfbmbnfm/dist/backend.js:1:36148)"
]
}
]
}
使用@rest指令进行的查询和变异似乎工作正常,并且不会引发任何其他错误,因此这不是一个完全阻止的问题,但是它确实会影响其他Apollo Client功能,例如,尝试使用@client指令不起作用并抛出相同的错误(如
我克隆了三个示例react-apollo项目(简单,高级,打字稿),并且在这三个示例中都出现了相同的错误。 #121引用了此问题,但似乎没有解决办法; 包含的修复程序是针对单独的“无法获取”错误的。 也有人提到缺少@rest或@client指令是潜在的原因,但是正如前面提到的,这种情况在示例项目以及我自己的项目中都在发生,因此我不认为缺少指令是罪魁祸首。
要重现,只需克隆示例项目,在Chrome中安装并启动并打开Apollo开发工具(当前版本,我遇到的错误是70.0.3538.77)。
感谢您的关注,喜欢它,发现它非常有用!
我认为GraphIQL不支持apollo-link-state / apollo-link-rest-我不认为它们总体上支持链接。 你有工作的例子吗?
当然,Apollo开发工具中的GraphiQL似乎可以正常工作。 使用JSONPlaceholder API,RestLink uri设置为https ://jsonplaceholder.typicode.com-这是我在运行任何查询之前最初得到的信息:
运行查询以获取所有用户后:
或使用“简单”示例项目:
我注意到的另一件事是,“从缓存读取”选项不适用于使用JSONPlaceholder api创建的新条目; POST突变会正确地将新条目写入缓存,但是即使选择了“从缓存读取”,后续查询也会尝试远程查询。 由于实际上并未创建新条目,因此它将按预期从远程端点返回null,但它是在缓存中创建的,因此“从缓存读取”应该返回它吗? 这可能与apollo-link-rest无关,并且不在此问题的范围内,但仍然很有趣。
我在GraphiQL中遇到了相同的错误, forward is not a function
。 不过,除cache
之外的所有内容似乎都可以使用。
这个家伙的任何更新,我有同样的问题:(
@cstoddart您的缓存面板为空,对吗?
没有人知道如何在没有devtools的情况下查看缓存吗?
我正在经历同样的事情。 @cgatian是的,我的缓存面板为空。
当这些破损发生了这么长时间时,很难接受阿波罗的工具链。 是否仍在积极进行apollo-link-rest?
@heymanhn-是,ApolloLinkRest正在积极开发中。 但这是开源的。 我很乐意帮助您进行PR的测试和交付,但是我没有ApolloDevTools的经验。
我们需要有人做,或者愿意深入他们的代码库,以找出与之兼容的必要条件。 我向您挑战,以找出缺失的部分,我很乐意支持您的贡献!
我想清楚一点,我不知道apollo-link-rest曾经与ApolloDevTools一起工作过,所以我想说这不是一个破绽,而是更多的缺少所需功能。
另外,我个人将apollo-link-rest与React-Native一起使用,而在一年前,ApolloDevTools与React-Native不兼容。
此后,他们宣布已修复该问题,但我无法为我团队的本地反应项目激活ApolloDevTools,所以我不知道那里出了什么问题。
你好! 我能够仔细研究导致此问题的原因。
看来此操作已由apollo-client-devtools调用。
但是,到达此处时, forward
是未定义的。
我不完全确定这一切如何工作,否则我会进行公关以解决该问题。 当我确实将!isRestQuery
支票更改!isRestQuery && forward
我能够使上述错误消失。 但是,我收到了一个新错误:
Error: Type Query must define one or more fields.
at t.assertValidSchema (chrome-extension://jdkknkkbebbapilgoeccciglkfbmbnfm/dist/devtools.js:1:258433)
at O (chrome-extension://jdkknkkbebbapilgoeccciglkfbmbnfm/dist/devtools.js:1:272246)
at k (chrome-extension://jdkknkkbebbapilgoeccciglkfbmbnfm/dist/devtools.js:1:271277)
at t.execute (chrome-extension://jdkknkkbebbapilgoeccciglkfbmbnfm/dist/devtools.js:1:270565)
at t.v (chrome-extension://jdkknkkbebbapilgoeccciglkfbmbnfm/dist/devtools.js:1:806774)
at t.n.emit (chrome-extension://jdkknkkbebbapilgoeccciglkfbmbnfm/dist/devtools.js:1:394893)
at chrome-extension://jdkknkkbebbapilgoeccciglkfbmbnfm/dist/devtools.js:1:517657
这是我用来查看/调试此问题的示例应用程序: https :
感谢您为该库所做的所有工作。 如果我能以任何方式提供帮助,我很乐意提供帮助。
我最近遇到了这个问题,并且将错误范围缩小到了IntrospectionQuery,我相信这是graphiql / devtools向graphql服务器查询架构的吗? 问题是,我仅使用apollo-client和apollo-link-rest,因此除了高速缓存模式(如果有)之外,没有服务器或模式。 反过来,我的apollo devtools是空白的。 不能完全确定这里的解决方案是什么,所有事情都在某一时刻起作用。
我最近遇到了这个问题,并且将错误范围缩小到了IntrospectionQuery,我相信这是graphiql / devtools向graphql服务器查询架构的吗? 问题是,我仅使用apollo-client和apollo-link-rest,因此除了高速缓存模式(如果有)之外,没有服务器或模式。 反过来,我的apollo devtools是空白的。 不能完全确定这里的解决方案是什么,所有事情都在某一时刻起作用。
同样在这里
最近在上周四,我们看到ApolloDevTools与React Native Debugger中的apollo-link-state,apollo-link-Rest一起使用。 我们确定这仍然是一个活跃的问题吗? 您在@ edgars-sirokovs上使用什么版本?
最近在上周四,我们看到ApolloDevTools与React Native Debugger中的apollo-link-state,apollo-link-Rest一起使用。 我们确定这仍然是一个活跃的问题吗? 您在@ edgars-sirokovs上使用什么版本?
@fbartho 2.2.4
@fbartho刚刚再次检查-现在可以正常工作了。 至少不再是空白了。
我仍然有问题-无法滚动缓存视图,Documentation Explorer没有显示架构(我只有通过typeDefs
传入的客户端架构)。
我不知道文档浏览器需要哪些支持apollo-link-rest,但如果有工作要做,也不会令我感到惊讶,和/或它将永远无法正常工作。 如果需要在这里接受PR,请接受!
滚动缓存视图绝对看起来像是ApolloDevTools代码中的错误,
但我很高兴您在@ edgars-sirokovs上取得了进步!
最近在上周四,我们看到ApolloDevTools与React Native Debugger中的apollo-link-state,apollo-link-Rest一起使用。 我们确定这仍然是一个活跃的问题吗? 您在@ edgars-sirokovs上使用什么版本?
我使用simple
项目进行了测试,但该测试无法正常工作,Apollo DevTools选项卡可用,但始终为空白,并且出现下一个错误。 https://github.com/apollographql/apollo-link-rest/tree/master/examples/simple
@fbartho我对我正在使用react-native-debugger的react native工作的项目执行了相同的操作,并遇到了相同的问题。 您可以分享您的设置或使用什么版本?
今天我们了解到它可以工作-但GraphiQL选项卡无效,仅其他选项卡有效: https :
由于似乎是同一问题,因此无法在devtools GraphiQL中读取本地架构Docs
。
运行此自省查询会在响应面板中显示[object Object]
,控制台会报告[Network error]: TypeError: forward is not a function
{
__schema {
types {
name
}
}
}
我的客户端没有graphql服务器:
import { ApolloClient } from 'apollo-client';
import { InMemoryCache } from 'apollo-cache-inmemory';
import { persistCache } from 'apollo-cache-persist';
import localForage from 'localforage';
import typeDefs from './schema.graphql';
import { resolvers } from './resolvers';
import { link } from './link';
import { initialState } from './initialState';
export let client;
export async function createApolloClient() {
const cache = new InMemoryCache();
await persistCache({ cache, storage: localForage, serialize: false });
client = new ApolloClient({ cache, link, resolvers, typeDefs });
window.__APOLLO_CLIENT__ = client;
cache.writeData({ data: initialState });
return client;
}
不确定上述情况是否与用例完全相关,但这是我可以找到的唯一相关的搜索结果,但最终得到的错误是我得到的。
我最近在尝试使用@apollo/client
向现有应用程序添加apollo-link-rest
时遇到了此错误。
tl; dr问题原来是,在定义新的ApolloCient
时,您不能同时传递uri
和link
作为选项参数。 相反,您必须删除uri
参数,并使用createHttpLink
创建一个HttpLink
createHttpLink
,然后使用from()
将链接和它们组合到link
选项参数。
在添加其余链接之前,这是我的定义:
import { ApolloClient, InMemoryCache } from '@apollo/client';
const client = new ApolloClient({
uri: '/api/graphql',
cache: new InMemoryCache(),
});
在阅读文档时,我的印象是,我应该能够通过定义一个新的RestLink
并将附加的link
参数添加到我的选项中来添加一个休息链接,如下所示:
import { ApolloClient, InMemoryCache } from '@apollo/client';
import { RestLink } from 'apollo-link-rest';
const restLink = new RestLink({
uri: '/api',
});
const client = new ApolloClient({
uri: '/api/graphql',
cache: new InMemoryCache(),
link: restLink,
});
但是,此配置导致TypeError: forward is not a function
错误发生,并且客户端不再工作。
在进一步阅读了有关链接的文档后,我意识到(尽管我看不到它的明确说明,并且在某些情况下这可能是不正确的)您不能使用uri
和link
在ApolloClient
定义中的link
选项参数。 使用此新信息,我能够通过删除uri
参数并创建一个HttpLink
来解决该问题,然后使用from()
和RestLink
合并,并一切最终都成功了(请注意,根据文档, RestLink
应该在HttpLink
):
import {
ApolloClient, InMemoryCache, from, createHttpLink,
} from '@apollo/client';
import { RestLink } from 'apollo-link-rest';
const httpLink = createHttpLink({
uri: '/api/graphql',
});
const restLink = new RestLink({
uri: '/api',
});
const client = new ApolloClient({
cache: new InMemoryCache(),
link: from([restLink, httpLink]),
});
谢谢@crbanman,您保存了我的一天! 💯
最有用的评论
你好! 我能够仔细研究导致此问题的原因。
看来此操作已由apollo-client-devtools调用。
但是,到达此处时,
forward
是未定义的。我不完全确定这一切如何工作,否则我会进行公关以解决该问题。 当我确实将
!isRestQuery
支票更改!isRestQuery && forward
我能够使上述错误消失。 但是,我收到了一个新错误:这是我用来查看/调试此问题的示例应用程序: https :
感谢您为该库所做的所有工作。 如果我能以任何方式提供帮助,我很乐意提供帮助。