Reactjs 未处理的GraphQL订阅错误ReferenceError:未定义文档
我正在尝试使用React本机应用程序和Rails Graphql服务器设置订阅,但出现以下错误: 未处理的GraphQL订阅错误ReferenceError:未定义文档 我怀疑我使用的其中一个库正在使用document,但不确定是哪一个,我遵循的示例是React应用程序的设置,而不是React Native 我遵循了这个指南: 这是我的app.js设置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
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()
})