首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >无法读取null的属性“executeQuery”

无法读取null的属性“executeQuery”
EN

Stack Overflow用户
提问于 2021-09-24 06:33:28
回答 1查看 76关注 0票数 0

有没有人能帮我理解为什么会出现这个错误:

我的设置:

新的sveltekit项目。graphql的ASP.net核心后端。在我修改它以包含订阅之前,查询是有效的。

错误消息:

代码语言:javascript
运行
复制
Cannot read property 'executeQuery' of null
TypeError: Cannot read property 'executeQuery' of null
at C:\Repos\AGScada\node_modules\@urql\svelte\dist\urql-svelte.js:234:11
at C:\Repos\AGScada\node_modules\wonka\dist\wonka.js:254:18
at Object.next (C:\Repos\AGScada\node_modules\wonka\dist\wonka.js:1161:14)
at C:\Repos\AGScada\node_modules\@urql\svelte\dist\urql-svelte.js:173:11
at Object.subscribe (C:\Repos\AGScada\node_modules\svelte\store\index.js:53:9)
at Object.subscribe (C:\Repos\AGScada\node_modules\@urql\svelte\dist\urql-svelte.js:96:14)
at C:\Repos\AGScada\node_modules\@urql\svelte\dist\urql-svelte.js:168:14
at C:\Repos\AGScada\node_modules\wonka\dist\wonka.js:1159:9
at C:\Repos\AGScada\node_modules\wonka\dist\wonka.js:247:7
at C:\Repos\AGScada\node_modules\wonka\dist\wonka.js:590:18

源代码index.svelte:

代码语言:javascript
运行
复制
    import { setClient, query, operationStore, subscription } from '@urql/svelte';
    import { createClient, defaultExchanges, subscriptionExchange } from '@urql/svelte';
    import { createClient as createWSClient } from 'graphql-ws';
    const wsClient = process.browser ? createWSClient({url: 'ws://localhost:5000/graphql',}):null;  
    const client = process.browser ? createClient({
    url: 'http://localhost:5000/graphql',
    exchanges: [
      ...defaultExchanges,
      subscriptionExchange({
        forwardSubscription: (operation) => ({
          subscribe: (sink) => ({
            unsubscribe: wsClient.subscribe(operation, sink),
          }),
        }),
      }),
    ],
  }): null;

    let tags = operationStore(`query {tags{tagName value}}`);

    let onTagUpdated = operationStore(`subscription {onTagUpdated{tagName value}}`);

    query(tags);
    subscription(onTagUpdated);

    setClient(client);

    if($tags.fetching)
    {
        console.log("loading");
    }    
    else
    {
        console.log($tags.data);
    }

谢谢你的帮助。

EN

回答 1

Stack Overflow用户

发布于 2021-09-26 11:48:09

我让sveltekit和URQL与订阅支持一起工作。

来源可以在这里找到:https://github.com/ruban258/sveltekit_urql_test

代码语言:javascript
运行
复制
import { Client, setClient, operationStore, subscription, defaultExchanges, subscriptionExchange, query, createClient } from '@urql/svelte';
import {SubscriptionClient} from 'subscriptions-transport-ws';
import { browser } from '$app/env';
import { createClient as createWSClient } from 'graphql-ws'; 


const subscriptionClient = browser ? new SubscriptionClient('ws://localhost:5000/graphql', { reconnect: true }): null;

const wsClient = browser? createWSClient({
  url: 'ws://localhost:5000/graphql',
}):null;

const client = browser ? new Client({
  url: 'http://localhost:5000/graphql',
  exchanges: [
    ...defaultExchanges,
    subscriptionExchange({
      forwardSubscription: (operation) => subscriptionClient.request(operation)
    }),
  ],
}): null;



const messages = operationStore(`
subscription onTagUpdated{
  onTagUpdated{
    tagName
    value
  }
}
  `);

const tags = operationStore(`
query{
  tags{
    tagName
    value
  }
}
  `);  

const handleSubscription = (messages = [], data) => {
return [data.newMessages, ...messages];
};


setClient(client);
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/69310535

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档