Я использую create-react-app и react-app-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 graphql, как это, с помощью 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 справедливо жаловался
Cannot query field "_id" on type "User"
Но потом после исправления GraphQL все равно жалуется на _id. Зарегистрировав свой импортированный editUserMutation AST, я обнаружил, что старая версия с ошибками все еще каким-то образом кэшировался и использовался.
Я пробовал много вещей:
- Перезапуск yarn start всего проекта
- Переименовать, а затем переименовать обратно мой файл graphql
- Очистить кеш браузера
Ничего не помогает.
В чем здесь проблема? Спасибо.
РЕДАКТИРОВАТЬ: я избавился от проблемы, удалив папку node_modules и переустановив свои зависимости. Так что в этой папке может быть какой-то очень постоянный кеш, кто-нибудь знает, где?





Из документации по базовому плагин:
Each time you modify a GraphQL file, the node_modules/.cache/babel-loader folder must be cleared for the changes to take effect. I recommend prepending the relevant script in your package.json and rerunning the script when you change a GraphQL file:
{
"scripts": {
"start": "rm -rf ./node_modules/.cache/babel-loader && node index.js"
}
}
Что ж, я смотрел везде, кроме этого... Большое спасибо.