Очистите кэш Create React App при импорте файлов graphql - PullRequest
1 голос
/ 21 апреля 2019

Я использую create-реагировать-приложение и реагировать-приложение-rewired, чтобы настроить мою конфигурацию.Вот мое config-overrides.js:

const { override, fixBabelImports, addLessLoader } = require('customize-cra')
const rewireInlineImportGraphqlAst = require('react-app-rewire-inline-import-graphql-ast')

module.exports = override(
  rewireInlineImportGraphqlAst,
  fixBabelImports('antd', {
    libraryDirectory: 'es',
    style: true
  }),
  fixBabelImports('ant-design-pro', {
    libraryDirectory: 'lib',
    style: true,
    camel2DashComponentName: false
  }),
  fixBabelImports('lodash', {
    libraryDirectory: '',
    camel2DashComponentName: false
  }),
  addLessLoader({
    javascriptEnabled: true,
    modifyVars: {
      '@primary-color': '#308AC9',
      '@font-size-lg': '15px',
      '@menu-inline-toplevel-item-height': '34px',
      '@menu-item-height': '34px'
    }
  })
)

react-app-rewire-inline-import-graphql-ast используется для анализа файлов graphql во время сборки, поэтому я могу импортировать графические AST, как это, используя Apollo:

import React from 'react'
import editUserMutation from '../graphql/editUser.graphql'

const Editor = () => (
  <Mutation mutation={editUserMutation}>
    {mutate => ...}
  </Mutation>
)

Вот мой файл graphql:

mutation($email: String!, $password: String!, $name: String!, $job: String!, $website: String!, $bio: String!, $avatar: String) {
  editUser(email: $email, password: $password, name: $name, job: $job, website: $website, bio: $bio, avatar: $avatar) {
    id
  }
}

Теперь возникает проблема: я сначала допустил ошибку в своем файле graphql, написав _id вместо idПоэтому GraphQL справедливо жаловался

Невозможно запросить поле "_id" для типа "Пользователь"

Но затем после исправления GraphQL все еще жалуется на _id.В журнале моего импортированного editUserMutation AST я обнаружил, что старая испорченная версия все еще как-то кэшировалась и использовалась.

Я много чего перепробовал: - Перезапуск yarn start на всемпроект - переименуйте, затем переименуйте мой файл graphql - очистите кеш браузера

Ничего не помогает.

В чем здесь проблема?Спасибо.

EDIT : я избавился от этой проблемы, удалив папку node_modules и переустановив мои зависимости.Так что в этой папке может быть какой-то очень постоянный кеш, кто-нибудь знает где?

1 Ответ

1 голос
/ 21 апреля 2019

Из документации к базовому плагину :

Каждый раз, когда вы изменяете файл GraphQL, папка node_modules / .cache / babel-loader должна очищаться, чтобы изменения вступили в силу. Я рекомендую добавить соответствующий скрипт в ваш package.json и повторно запустить скрипт при изменении файла GraphQL:

    {
      "scripts": {
        "start": "rm -rf ./node_modules/.cache/babel-loader && node index.js"
      }
    }
...