Кэш схемы Relay / GraphQL не обновляется, когда я обновляю схему на стороне сервера

У меня есть приложение React, использующее Relay и удаленный сервер GraphQL. Когда я запускаю сервер webpack, он получает последнюю схему и загружает ее в плагин babel-relay.

Он отлично работает .... кроме случаев, когда я меняю схему. Похоже, что React или Relay, или веб-пакет, или что-то еще кэширует схему, потому что я получаю сообщение об ошибке проверки схемы в консоли браузера, когда я запускаю приложение. Однако, когда я запускаю запрос к серверу GraphQL вручную с помощью GraphIQL, запрос выполняется успешно. Значит, это должен быть какой-то кеш на стороне реакции, реле, веб-пакета, я думаю?

Вещи, которые я пробовал:

  1. Пункт списка
  2. Перезапуск сервера webpack
  3. Удаление node_modules и npm install
  4. Я даже попытался перезагрузить компьютер (это действительно сработало, но может быть совпадением)

Заранее спасибо за помощь.


person postalservice14    schedule 01.09.2016    source источник
comment
Я наблюдал ту же проблему и до сих пор не нашел для нее решения.   -  person Ferdinand Salis-Samaden    schedule 04.09.2016
comment
Вы пытались изменить что-то в файле js, чтобы принудительно перекомпилировать, возможно, он не обнаруживает изменения в js, поэтому он не перекомпилируется. Иногда это срабатывало. Я подозреваю, что webpack тоже может кешировать, и вместе с HotModuleReplacment может возникнуть больше проблем. Хотя не уверен.   -  person Ferdinand Salis-Samaden    schedule 04.09.2016
comment
Да, я пробовал это. : - / Похоже, ничего не делает.   -  person postalservice14    schedule 06.09.2016
comment
Да, у меня тоже не сработало.   -  person Ferdinand Salis-Samaden    schedule 06.09.2016
comment
Вы когда-нибудь находили надежное решение @ postalservice14?   -  person Chris Edwards    schedule 06.10.2016
comment
@ChrisEdwards Да, спасибо, что напомнили мне обновить это. Смотрите мой ответ ниже.   -  person postalservice14    schedule 08.11.2016


Ответы (2)


Оказывается, конечно, это была человеческая ошибка. У меня был cacheDirectory как true в моем запросе babel-loader. Вы можете прочитать об этом в readme-файле babel-loader (просто найдите на странице 'cacheDirectory') https://github.com/babel/babel-loader

Однажды я изменил это на false, что по умолчанию. Проблема ушла. Надеюсь, что это поможет другим.

person postalservice14    schedule 08.11.2016

Это случилось со мной, когда я перешел на Webpack 2.

В моем случае решение заключалось в том, чтобы переместить babelRelayPlugin, чтобы он был первым подключаемым модулем, выполняемым в .babelrc.

Я не совсем уверен, почему.

person Chris Martin    schedule 04.09.2016
comment
Он у меня на первой позиции. Однако я все еще наблюдаю ту же проблему. - person Ferdinand Salis-Samaden; 05.09.2016