Попытка рефакторинга моего gatsby-node
файла путем аутсорсинга небольшого количества кода. Прямо сейчас, пытаясь сделать это в моем gatsby-node
:
const createBlogPostPages = require("./gatsby-utils/createBlogPostPages");
exports.createPages = async ({ actions, graphql, reporter }) => {
//...some code
await createBlogPostPages({ actions, graphql, reporter });
//...some code
}
и мой createBlogPostPages
, который находится в другом файле, выглядит так:
const path = require("path");
module.exports = async function({ actions, graphql, reporter }) {
const { createPage } = actions;
const blogArticles = await graphql(`
{
allMdx(filter: { fileAbsolutePath: { regex: "/content/blog/.*/" } }) {
edges {
node {
id
fileAbsolutePath
fields {
slug
}
frontmatter {
title
tags
date
tagline
}
}
}
}
}
`);
blogArticles.data.allMdx.edges.forEach(({ node }) => {
let imageFileName = ... //some stuff
createPage({
path: `${node.fields.slug}`,
component: path.resolve(`./src/templates/blog-post.js`),
context: {
slug: `${node.fields.slug}`,
id: node.id,
imageFileName: imageFileName
}
});
});
};
Все это работает, когда его прямо в gatsby-node
. Однако, переместив вещи, я теперь получаю:
"gatsby- node.js" выдал ошибку при запуске жизненного цикла createPages:
blogArticles не определен
ReferenceError: blogArticles не определена
Так выглядит как будто он не ждет разрешения запроса graphql? Или что это может быть? Я просто хочу переместить несколько вещей из моего gatsby-node
файла в отдельные функции, чтобы он не был перегружен. Разве это не возможно?