我在访问fields
的{{1}}属性时遇到麻烦,进入graghql游乐场时,我找不到markdownRemark
fields
gatsby-node.js
const path = require(`path`)
const { createFilePath } = require(`gatsby-source-filesystem`);
exports.onCreate = ({ node, getNode, actions }) => {
const { createNodeField } = actions
if (node.internal.type === `MarkdownRemark`) {
const slug = createFilePath({ node, getNode })
createNodeField({
node,
name: `slug`,
value: slug
})
}
}
exports.createPage = ({ graphql, actions }) => {
const { createPage } = actions
return grapgh(`
allMarkdownRemark {
edges {
node {
fields {
slug
}
}
}
}
`).then(result => {
result.data.allMarkdownRemark.edges.forEach(({node}) => {
createPage({
path: node.fields.slug,
component: path.resolve(`./src/templates/blog-post.js`),
context: node.fields.slug
})
})
})
}
gatsby-config.js
答案 0 :(得分:0)
您应该使用:
const { createFilePath } = require(`gatsby-source-filesystem`)
exports.onCreateNode = ({ node, getNode, actions }) => {
const { createNodeField } = actions
if (node.internal.type === `MarkdownRemark`) {
const slug = createFilePath({ node, getNode, basePath: `pages` })
createNodeField({
node,
name: `slug`,
value: slug,
})
}
}
请注意,您使用的是onCreate
而不是onCreateNode
API。有关Gatsby Node APIs的更多信息。从文档中:
在创建新节点时调用。希望扩展或扩展的插件 由其他插件创建的转换节点应实现此API。 另请参见
createNode
和createNodeField
的文档。