gatsby require.resolve не может найти модуль в createPage

#javascript #node.js #reactjs #graphql #gatsby

#javascript #node.js #reactjs #graphql #gatsby

Вопрос:

Я следую руководству здесь https://www.gatsbyjs.com/docs/using-gatsby-without-graphql / и у меня есть мой gatsby-node.js заполненный.

Моя текущая структура каталогов:

 public
src
-pages
-templates
--program_group.js
static
gatsby-config.js
gatsby-node.js
 

внутри моего gatsby-node.js файл, который у меня есть

 programGroups.forEach(program => {
      createPage({
        path: `/programs/${program}/`,
        component: require.resolve("src/templates/program_group.js"),
        context: { program },
      })
    })
 

и когда я запускаю gatsby develop , он говорит: «Не удается найти модуль ‘src/templates/program_group.js «»

Я попытался изменить путь на ./src/ ….. и ../src / и каждую комбинацию. В документации говорится, что он должен быть относительно файла конфигурации, к которому указан указанный выше путь…

Мысли?

Ответ №1:

Попробуйте использовать относительные пути с помощью path.resolve . Это должно сработать:

 const path = require(`path`); // import it outside the function


    programGroups.forEach(program => {
          createPage({
            path: `/programs/${program}/`,
            component: path.resolve("./src/templates/programGroup.js"),
            context: { program },
          })
        })
 

Вы не можете подчеркнуть шаблоны из-за проблем с именованием, это еще один момент, которого следует избегать.

Ответ №2:

Итак, как ни странно, у вас не может быть подчеркивания в имени файла шаблона. Это должно быть исправлено в компиляторе gatsby. Решение: не используйте _ в именах ваших шаблонов