Gatsby Shopify не создает отдельные страницы

#node.js #graphql #shopify #gatsby

#node.js #graphql #Shopify #gatsby

Вопрос:

Я работаю с базовым шаблоном веб-сайта Gatsby Shopify здесь https://www.gatsbyjs.com/docs/building-an-ecommerce-site-with-shopify /

Я создаю страницу списка продуктов, а также создаю страницы, относящиеся к конкретному продукту, в соответствии с примером. Когда приложение полностью загружается после разработки gatsby, я вижу вызов allShopifyProduct в проводнике graphql, но перед сборкой я вижу следующую ошибку

 ERROR #11321  PLUGIN

"gatsby-node.js" threw an error while running the createPages lifecycle:

Cannot read property 'allShopifyProduct' of undefined

  31 |   // Iterate over all products and create a new page using a template
  32 |   // The product "handle" is generated automatically by Shopify
> 33 |   result.data.allShopifyProduct.edges.forEach(({ node }) => {
     |               ^
  34 |     createPage({
  35 |       path: `/product/${node.handle}`,
  36 |       component: path.resolve(`./src/templates/product.js`),

File: gatsby-node.js:33:15
 

После загрузки сервера я вижу это

введите описание изображения здесь

Поэтому из-за этого я получаю HTTP 404, когда запрашиваю конкретный продукт, подобный этому

 http://localhost:8000/product/short-sleeve-t-shirt
 

Не уверен, что я делаю не так или как это обойти.

Ответ №1:

Что в конечном итоге решило эту проблему для меня, так это то, что пример Gatsby искал данные API, которые больше не были доступны в Shopify — в частности, параметр availableForSale. Как только я удалил это из примера запроса GraphQL в gatsby-node.js и повторно запустите сборку разработчика, она сгенерировала шаблонные страницы, как и ожидалось. Обязательно прочитайте всю возвращающуюся ошибку и посмотрите, сможете ли вы точно определить, где она дает сбой.

Ответ №2:

Если вы следовали этому руководству или аналогичному, вы должны были сохранить свои данные Shopify в переменных среды. Gatsby по умолчанию использует .env.development file for gatsby develop и .env.production file for gatsby build .

Если ваш код работает только в одной среде, ваша проблема может возникнуть из-за того, что вы не установили .env.production с переменными, что делает Gatsby недоступным для доступа к Shopify и не может определить схему, которая будет решена вашим запросом GraphQL.

Я предполагаю, что вам не хватает .env.production файла. Просто создайте его в корне вашего проекта как .env.development .

Ресурсы, использующие gatsby-source-shopify плагин:

Комментарии:

1. Я не думаю, что это проблема с переменной среды. На самом деле у меня нет ни файла разработчика, ни prod. Редактор grpahql работает нормально, а страница React — нет. Вы не знаете, есть ли код для этого примера где-нибудь на github? gatsbyjs.com/docs/building-an-ecommerce-site-with-shopify

2. Я обновил ответ тремя вариантами начала, используя Shopify в качестве источника