Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/reactjs/22.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Reactjs 未处理的GraphQL订阅错误ReferenceError:未定义文档_Reactjs_React Native_Graphql_Apollo - Fatal编程技术网

Reactjs 未处理的GraphQL订阅错误ReferenceError:未定义文档

Reactjs 未处理的GraphQL订阅错误ReferenceError:未定义文档,reactjs,react-native,graphql,apollo,Reactjs,React Native,Graphql,Apollo,我正在尝试使用React本机应用程序和Rails Graphql服务器设置订阅,但出现以下错误: 未处理的GraphQL订阅错误ReferenceError:未定义文档 我怀疑我使用的其中一个库正在使用document,但不确定是哪一个,我遵循的示例是React应用程序的设置,而不是React Native 我遵循了这个指南: 这是我的app.js设置 const httpLink=createHttpLink({ uri:`${global.URL}/graphql`, }) const c

我正在尝试使用React本机应用程序和Rails Graphql服务器设置订阅,但出现以下错误:

未处理的GraphQL订阅错误ReferenceError:未定义文档

我怀疑我使用的其中一个库正在使用document,但不确定是哪一个,我遵循的示例是React应用程序的设置,而不是React Native

我遵循了这个指南:

这是我的app.js设置

const httpLink=createHttpLink({
uri:`${global.URL}/graphql`,
})
const cable=ActionCable.createConsumer('ws://localhost:3000/cable'))
常量hasSubscriptionOperation=({query:{definitions}})=>{
返回定义(
({kind,operation})=>kind=='OperationDefinition'&&operation=='subscription',
)
}
const link=ApolloLink.split(
hasSubscriptionOperation,
新ActionCableLink({cable}),
httpLink
)
const客户端=新客户端({
链接:链接,
缓存:新的InMemoryCache()
})
返回(
)

我愿意分享更多我的代码,但因为我不确定错误可能来自哪里,我需要一些指导

您展示的指南不是针对react-native的,而是针对react和react-dom的。我想您已经知道了这一点,这就是为什么您删除了
文档.getElementById('root')
,但您不知道
graphql ruby客户端出于某种原因需要DOM。它依赖于文档,在react native中,全局范围内没有
document
对象。这仅在浏览器中可用


我建议使用不同的graphQL客户端,例如,Ben提到的教程是针对React而不是React Native的,但是,它确实使用了Apollo,因此我设法使它工作,而不是使用\u SubscribeToNewLink方法,我使用了Apollo useSubscription挂钩,它工作了!然而,我仍然有通道传输不工作的问题,每次

const { data: subscriptionData, _error, _loading } = 
  useSubscription(NEW_LINKS, {
  shouldResubscribe: true,
  onSubscriptionData: () => refetch()
})

错误堆栈跟踪的屏幕截图将更有助于找到根本原因
const { data: subscriptionData, _error, _loading } = 
  useSubscription(NEW_LINKS, {
  shouldResubscribe: true,
  onSubscriptionData: () => refetch()
})