Ошибка при использовании Relay + React Native (create-react-native-app): ошибка проверки GraphQL «Просмотрщик неизвестного типа».

Я пытаюсь настроить приложение RN (которое было создано с помощью create-react-native-app) и подключить его к Relay.

У меня уже есть следующие настройки в моем App.js:

import { StyleSheet, Text, View } from 'react-native'
import Relay, {
  Route,
  RootContainer,
} from 'react-relay'
import PokemonList from './components/PokemonList'

Relay.injectNetworkLayer(
  new Relay.DefaultNetworkLayer('https://api.graph.cool/relay/v1/ciyeih9590fhl0162e5zh1z4h', {
    headers: {
    },
  })
)

class IndexRoute extends Route {
  static queries = {
    viewer: () => Relay.QL`query { viewer }`
  }
  static routeName = 'IndexRoute'
}

export default class App extends React.Component {
  render() {
    return (
      <View style={styles.container}>
        <RootContainer
          Component={PokemonList}
          route={new IndexRoute()}
          renderFetched={(data) => <PokemonList {...this.props} {...data} />}
        />
      </View>
    )
  }
}

PokemonList пока ничего не делает, ожидая печати viewer.id, которую я ожидаю загрузить из API GraphQL:

import Relay from 'react-relay'

class PokemonList extends React.Component {

  render() {
    console.log(this.props.viewer.id)
    return (
      <View>
        <Text>Hi</Text>
      </View>
    )
  }

}

export default Relay.createContainer(PokemonList, {
  fragments: {
    viewer: () => Relay.QL`
      fragment on Viewer {
        id
      }
    `
  }
})

Я использую этот плагин Babel, чтобы сделать мою схему доступной для Relay при сборке. время.

Требуется предоставить конечную точку GraphQL, используя одну из три метода. Я настроил его в файле .graphqlrc следующим образом:

{
  "request": {
    "url": "https://api.graph.cool/relay/v1/ciyeih9590fhl0162e5zh1z4h",
    "headers": {
      "Authorization": "xxxxx"
    }
  }
}

А вот так выглядит мой .babelrc:

{
  "presets": ["babel-preset-expo"],
  "env": {
    "development": {
      "plugins": ["transform-react-jsx-source", "react-relay"]
    }
  }
}

Однако, когда я запускаю приложение, я получаю эту ошибку:

Ошибка проверки GraphQL Unknown Type "Viewer". в файле .../PokemonList.js. Попробуйте обновить схему GraphQL, если недавно был добавлен аргумент/поле/тип.

Так что мне кажется, что Relay вообще не получает доступ к моей схеме. Может ли кто-нибудь сказать, что мне не хватает в моей настройке или что я могу сделать для дальнейшей отладки?

И просто для справки, если это кому-то поможет, вот как выглядит мой package.json:

{
  "name": "test",
  "version": "0.1.0",
  "private": true,
  "devDependencies": {
    "babel-plugin-react-relay": "^0.10.0",
    "jest-expo": "^0.3.0",
    "react-native-scripts": "0.0.25",
    "react-test-renderer": "~15.4.1"
  },
  "main": "./node_modules/react-native-scripts/build/bin/crna-entry.js",
  "scripts": {
    "start": "react-native-scripts start",
    "eject": "react-native-scripts eject",
    "android": "react-native-scripts android",
    "ios": "react-native-scripts ios",
    "test": "node node_modules/jest/bin/jest.js --watch"
  },
  "jest": {
    "preset": "jest-expo"
  },
  "dependencies": {
    "expo": "^15.1.0",
    "react": "~15.4.0",
    "react-native": "0.42.3",
    "react-relay": "^0.10.0"
  }
}

person nburk    schedule 28.03.2017    source источник


Ответы (1)


Итак, ответ был довольно простым, кажется, моя настройка уже была правильной, но мне также пришлось удалить кеш crna, поэтому запуск rm -rf $TMPDIR/react* и перезапуск симулятора iOS на самом деле уже сделал это.

person nburk    schedule 28.03.2017