2015-10-07 3 views
1

Я разработал сервер graphql с laravel (https://github.com/Folkloreatelier/laravel-graphql). Теперь я хотел бы создать приложение React с помощью Relay. Когда я создаю свой первый компонент, я получаю сообщение об ошибке: Ошибка при отсутствии: инвариантное нарушение: RelayQL: Неожиданный вызов во время выполнения. Либо преобразование Babel не было настроено, либо не удалось идентифицировать этот сайт вызова. Убедитесь, что он используется дословно как Relay.QL.Реле JS только на стороне клиента

Я по-прежнему искал эту ошибку, и я узнал, что мне нужно установить плагин Babel Relay. Но для включения этого плагина я должен указать схему. Но я все еще указал эту схему на стороне сервера, зачем мне это также на стороне клиента? Есть ли какой-нибудь пример реализации этого, когда сервер все еще реализован (внешний сервер, например, NodeJS-сервер).

Благодарим вас за советы.

ответ

4

Схема для ваших данных на стороне сервера требуется babel-relay-plugin, чтобы сделать трансляцию из фрагментов Relay.QL в Javscripts, которые будут доставлены на клиентскую сторону. Обратите внимание, что на вашем сервере GraphQL вы определяете схему в классах Laravel GraphQL PHP, которые вам необходимо преобразовать в формат JSON, который ожидает babel-relay-plugin.

Например, я сделал аналогичную установку с Rails и graphql-ruby (https://github.com/nethsix/relay-on-rails).

  • Определение схемы данных на моей стороне сервера с помощью graphql рубинового классов в app/graph каталоге
  • Преобразование схемы в файл JSON с помощью сценария lib/tasks/graphql.rake, который я тогда копить в app/assets/javascripts/relay/data/schema.json
  • Поинта к schema.json в файле babelRelayPlug.js, где она (моя в assets/javascripts/relay/utils/babelRelayPlugin.js)

для Rails, можно легко сбросить схема graphql-ruby для json путем вызова метода #to_json. У вас могут быть аналогичные методы в PHP.

я сравнил разницу между настройкой реле на сервере nodejs, против не-nodejs сервера, используя иллюстрацию здесь, если это помогает (https://medium.com/@khor/relay-facebook-on-rails-8b4af2057152)

+1

Это отличный ответ. Альтернативой является запрос вашего сервера на схему (GraphQL поддерживает интроспекцию). Вот пример того, как это сделать: https://github.com/facebook/relay/issues/206#issuecomment-138186103. –

Смежные вопросы