В настоящее время я пытаюсь создать сайт блога, используя gatsbyjs, и хотел бы, чтобы в моих сообщениях блога создавались страницы для них программным способом.
Я выполнил действия, описанные в разделе учебных пособий официальной документации, но вместо создания страниц из файла уценки я извлекаю данные из содержательной CMS. Я продолжаю нажимать на этот блок всякий раз, когда запускаю свой код.
Гэтсби-node.js
const path= require('path')
exports.createPages=({graphql,actions})=>{
const {createPage}=actions
const blogPost= path.resolve('./src/components/blogComponents/blog-post.js')
return new Promise((resolve,reject)=>{
graphql(`
{
allContentfulBlog{
edges{
node{
slug
}
}
}
}
`).then(results=>{
// console.log(results)
if(results.error){
reject(results.error)
}
// create blog post pages
const posts=results.data.allContentfulBlog.edges
posts.forEach((post,index)=>{
console.log(`showing slugs: ${post.node.slug}`)
createPage({
path:post.node.slug,
component:blogPost ,
context:{
slug:post.node.slug,
}
})
})
}).then(resolve)
})
}
блог-post.js
import React from 'react'
import { graphql} from 'gatsby'
const blogPost=({data})=>{
return (
<div>
new page created
</div>
)
}
export default blogPost
export const pageQuery= graphql`
query ($slug: String!){
allContentfulBlog (slug:{eq: $slug }) {
edges{
node{
content{
content
}
}
}
}
}
`
Я ожидал, что файл blog-post.js получит все соответствующие переменные, но вместо этого он продолжал выдавать ошибку «неизвестный аргумент 'slug'", делая ссылку на файл blog-post.js.