代码之家  ›  专栏  ›  技术社区  ›  TheJediCowboy

中继订阅-带有请求订阅的间歇性故障

  •  0
  • TheJediCowboy  · 技术社区  · 6 年前

    我正在尝试使用 Relay Suscriptions Docs

    import { graphql, requestSubscription } from 'react-relay';
    import environment from '../relay/environment';
    
    const subscription = graphql`
      subscription somethingHappenedSubscription {
        somethingHappened {
          id
          status
        }
      }
    `;
    
    export default () => {
      const subscriptionConfig = {
        subscription,
        updater: store => console.log('updater hit');
        onError: error => console.log('An error occured:', error),
      };
      requestSubscription(environment, subscriptionConfig);
    };
    

    我把它吃了如下

    import somethingHappenedSubscription from '../subscriptions/somethingHappened.js'
    
    const MyComponent = () => {
       somethingHappenedSubscription()
       // return something simple
    }
    

    我已经能够确认这一切都是正确的,我已经看到了 updater 功能,尽管通常不是 最后 将开始失败,并出现以下错误:

    An error occured: TypeError: observable.do is not a function
        at Object.execute (index.js:604)
        at RelayModernEnvironment.js:251
        at _subscribe (RelayObservable.js:579)
        at RelayObservable.subscribe (RelayObservable.js:280)
        at RelayObservable.js:195
        at _subscribe (RelayObservable.js:579)
        at RelayObservable.subscribe (RelayObservable.js:280)
        at RelayObservable.js:195
        at _subscribe (RelayObservable.js:579)
        at RelayObservable.subscribe (RelayObservable.js:280)
    

    到处都找过了,但不知道它是从哪里来的,为什么它有时只会失败?

    我正在使用以下软件包

    "react-relay": "^7.1.0",
    "relay": "^0.8.0-1",
    "relay-hooks": "^1.2.5",
    

    更新 我注意到一些有趣的事情,可能是一个贡献者(虽然我真的不知道怎么做),如果我 relay-devtools 正在运行(桌面版本)。

    不知道这是如何关联的,但似乎只有在我打开它的时候才会发生。

    0 回复  |  直到 6 年前
    推荐文章