Я занимаюсь разработкой приложения на GatsbyJS и export
с одним из моих GraphQL фрагментов как таковых:
import { graphql } from 'gatsby';
export const w300Image = graphql`
fragment w300Image on File {
childImageSharp {
fluid(maxWidth: 300) {
...GatsbyImageSharpFluid
presentationWidth
}
}
}
`;
export const squareImage = graphql`
fragment squareImage on File {
childImageSharp {
fluid(maxWidth: 200, maxHeight: 200) {
...GatsbyImageSharpFluid
presentationWidth
}
}
}
`;
I import
и использовать squareImage
как таковое:
import React from 'react';
import { useStaticQuery, graphql } from 'gatsby';
import { squareImage } from '../graphql/imageFragments';
import NonStretchedImage from './nonStretchedImage';
const Image = () => {
const data = useStaticQuery(graphql`
query {
astronaut: file(relativePath: { eq: "gatsby-astronaut.png" }) {
...squareImage
}
}
`);
return <NonStretchedImage fluid={data.astronaut.childImageSharp.fluid} alt="nFront mobile development" />;
};
Примечание. Моя среда IDE предупреждает меня о том, что squareImage
import
никогда не читается. Однако, поскольку это не так, я предполагаю, что он просто неспособен определить свое присутствие в запросе GraphQL.
Вопрос
Если я заменим export
на нижеследующее (то есть переместим export
в конец файла), произойдет сбой при компиляции со следующим сообщением об ошибке:
Ошибка: инвариантное нарушение: GraphQLCompilerContext: неизвестный документ
squareImage
.
Новый код экспорта (разница только в том, что export
переместился в конец):
import { graphql } from 'gatsby';
const w300Image = graphql`
fragment w300Image on File {
childImageSharp {
fluid(maxWidth: 300) {
...GatsbyImageSharpFluid
presentationWidth
}
}
}
`;
const squareImage = graphql`
fragment squareImage on File {
childImageSharp {
fluid(maxWidth: 200, maxHeight: 200) {
...GatsbyImageSharpFluid
presentationWidth
}
}
}
`;
export { squareImage, w300Image };
Есть идеи, что здесь происходит? Я думал, что два export
были идентичны? Возможно, сотрясение дерева происходит только в одном сценарии?
EDIT
Добавлено console.log(squareImage)
после import
, и ошибка все еще появляется. Другими словами, сотрясение деревьев не является виновником.