尝试创建页面时,我收到此错误

时间:2019-12-30 20:34:43

标签: reactjs gatsby

这是该文件中的所有代码。我找到了此链接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 }

1 个答案:

答案 0 :(得分:1)

删除内容丰富的插件后,我能够看到一条更有用的错误消息。 创建新页面时.md文件中缺少一些图像,因此我的模板页面上的这一行出现了错误

data.frontmatter.featuredImage.childImageSharp.fluid <-

我在图片标签中添加了三元条件,并在此之后构建了

<Img
          style={{ width: '70%' }}
          fluid={
            data.frontmatter.featuredImage
              ? data.frontmatter.featuredImage.childImageSharp.fluid
              : {}
          }
          alt="Large Image"
        />