这是该文件中的所有代码。我找到了此链接https://github.com/datocms/gatsby-source-datocms/issues/52,但似乎并没有帮助删除getNode。任何帮助将不胜感激。我找不到在其他任何地方使用“替换”的地方,但我会继续寻找。该错误似乎并没有阻止它使用gatsby development进行构建,也没有阻止该错误创建子弹。很奇怪。
const path = require('path');
const DirectoryNamedWebpackPlugin = require('directory-named-webpack-plugin');
const { createFilePath } = require('gatsby-source-filesystem');
exports.onCreateWebpackConfig = ({
stage,
getConfig,
rules,
loaders,
actions,
}) => {
actions.setWebpackConfig({
resolve: {
modules: [path.resolve(__dirname, 'src'), 'node_modules'],
plugins: [
new DirectoryNamedWebpackPlugin({
exclude: /node_modules/,
}),
],
},
});
};
exports.onCreateNode = ({ node, getNode, actions }) => {
const { createNodeField } = actions
if (node.internal.type === 'MarkdownRemark') {
const slug = createFilePath({ node, getNode, basePath: 'slugs' });
console.log(slug);
createNodeField({
node,
name: `slug`,
value: slug,
});
}
};
我的代码的第二部分如下:
exports.createPages = async ({ graphql, actions }) => {
const { createPage } = actions;
const result = await graphql(`
query {
allMarkdownRemark {
edges {
node {
fields {
slug
}
}
}
}
}
`)
result.data.allMarkdownRemark.edges.forEach(({ node }) => {
console.log(node)
createPage({
path: node.fields ? node.fields.slug : '',
component: path.resolve(`./src/template/project.js`),
context: {
// Data passed to context is available
// in page queries as GraphQL variables.
slug: node.fields ? node.fields.slug : '',
},
})
});
}
最后一个字段为null并引发错误。不知道为什么它在那里?我可以轻松设置条件,但是默认值是什么?有什么建议么?见下文
{ fields: { slug: '/about/content/' } }
{ fields: { slug: '/home/intro/' } }
{ fields: { slug: '/slugs/goldparent/' } }
{ fields: { slug: '/slugs/ipadmaster/' } }
{ fields: null }
答案 0 :(得分:1)
删除内容丰富的插件后,我能够看到一条更有用的错误消息。 创建新页面时.md文件中缺少一些图像,因此我的模板页面上的这一行出现了错误
data.frontmatter.featuredImage.childImageSharp.fluid <-
我在图片标签中添加了三元条件,并在此之后构建了
<Img
style={{ width: '70%' }}
fluid={
data.frontmatter.featuredImage
? data.frontmatter.featuredImage.childImageSharp.fluid
: {}
}
alt="Large Image"
/>