Я настраиваю createPages в Гэтсби, используя слаг, извлеченный из Graphql из Strapi.
Вот мой запрос:
query {
allStrapiPosts {
nodes {
slug
}
}
}
GraphiQL возвращает:
{
"data": {
"allStrapiPosts": {
"nodes": [
{
"slug": "/pizza-struggles-today"
},
{
"slug": "/raining-in-paradise"
},
{
"slug": "/blog-title"
}
]
}
}
}
My gatsby- node.js:
const path = require("path")
exports.createPages = async ({ graphql, actions }) => {
const { createPage } = actions
const { data } = await graphql(`
query {
allStrapiPosts {
nodes {
slug
}
}
}
`)
console.log(data)
data.allStrapiPosts.nodes.forEach(({ node }) => {
createPage({
path: `blog${node.slug}`,
component: path.resolve("./src/Templates/Post-Template.js"),
context: {
slug: node.slug,
},
})
})
}
Вот ошибки из терминала:
[Object: null prototype] {
allStrapiPosts: [Object: null prototype] {
nodes: [
[Object: null prototype],
[Object: null prototype],
[Object: null prototype]
]
}
}
ERROR #11321 PLUGIN
"gatsby-node.js" threw an error while running the createPages lifecycle:
Cannot read property 'slug' of undefined
17 | data.allStrapiPosts.nodes.forEach(({ node }) => {
18 | createPage({
> 19 | path: `blog${node.slug}`,
| ^
20 | component: path.resolve("./src/Templates/Post-Template.js"),
21 | context: {
22 | slug: node.slug,
File: gatsby-node.js:19:25
TypeError: Cannot read property 'slug' of undefined
- gatsby-node.js:19
/Users/jeffstahlnecker/Developer/mxc-blog/gatsby-node.js:19:25
- Array.forEach
- gatsby-node.js:17 Object.exports.createPages
/Users/jeffstahlnecker/Developer/mxc-blog/gatsby-node.js:17:29
- task_queues.js:94 processTicksAndRejections
internal/process/task_queues.js:94:5
failed createPages - 0.046s
Мои запросы в других местах в Гэтсби работают хорошо. Например, у меня есть аналогичный запрос, создающий список сообщений в блоге, который работает без проблем.
Потратил несколько часов, пытаясь устранить эту проблему прошлой ночью. Приветствуется любая помощь.
Из gastby-config. js:
{
resolve: `gatsby-source-strapi`,
options: {
apiURL: `https://cms.mxc.org:443`,
queryLimit: 1000, // Default to 100
contentTypes: [`posts`],
//If using single types place them in this array.
// singleTypes: [`home-page`, `contact`],
// Possibility to login with a strapi user, when content types are not publically available (optional).
loginData: {
identifier: "",
password: "",
},
},
},