Я работаю над плагином для gatsby-transformer-notes. В своем плагине я беру данные из преобразователя Remark и создаю узел graphql нового типа. Когда я запускаю сайт и открываю GraphIQL в http://localhost: 8000 / ___ graphql , я вижу новый узел моего плагина и его данные. Однако, когда я пытаюсь получить доступ к данным этого узла в компоненте страницы Gatsby, запрос graphql возвращает ноль для этого типа узла. Почему данные не отображаются в запросе graphql на моей странице? Могу ли я не создавать новые узлы graphql в плагинах Remark? API плагина Remark gatsby предоставляет необходимые методы для создания узлов.
По этой ссылке у меня есть минимальный репозиторий репродукций. Инструкции по его запуску и просмотру проблемы находятся в файле readme.
https://github.com/timothymcmackin/test-create-nodes
Я создаю узел graphQL в plugins/gatsby-remark-internal-toc/index.js
с помощью метода createNode
:
if (headings.length > 0) {
const { createNode } = actions;
const headingNode = {
headings: headings,
path: markdownNode.frontmatter.path,
id: createNodeId(`${markdownNode.frontmatter.path}.${markdownNode.frontmatter.title}`),
children: [],
internal: {
description: `Headings and links for ${markdownNode.fileAbsolutePath}`,
type: "topicInternalHeadings",
contentDigest: createContentDigest(headings),
content: JSON.stringify(headings),
}
};
await createNode(headingNode);
}
Я запускаю сайт командой Gatsby develop
. Затем я открываю graphIQL и запускаю этот запрос:
query MyQuery {
topicInternalHeadings(path: {eq: "/mypage.html"}) {
headings {
level
path
text
}
}
}
Запрос возвращает данные для узла topicInternalHeadings
.
Затем я открываю http://localhost:8000/myPage.html
, в котором есть аналогичный запрос. Тем не менее, результаты его запроса:
{markdownRemark: {…}, topicInternalHeadings: null}
Ожидаемый результат
Данные узла graphql, которые я создаю в плагине, доступны как для запросов graphiql, так и для graphql на страницах Gatsby.
Фактический результат
Данные об узлах доступны для graphiql, но запросы graphql на страницах Gatsby возвращают ноль.