Gatsby开发和Gatsby信息均返回错误

时间:2018-12-22 17:27:47

标签: node.js gatsby

我不太了解自己的构建发生了什么,目前gatsby develop返回TypeError: Cannot read property 'allMarkdownRemark' of undefined指向此文件

gatsby-node.js:19 graphql.then.results
C:/Users/Anders/sites/gatsby-netlify-cms/gatsby-node.js:19:20

并且gatsby info在返回有关项目error The system cannot find the path specified.的信息后返回

这是gatsby-node.js文件

const path = require('path')

exports.createPages = ({ graphql, actions }) => {
  const { createPage } = actions
  return new Promise((resolve, reject) => {
    graphql(`
      {
        allMarkdownRemark {
          edges {
            node {
              frontmatter {
                slug
              }
            }
          }
        }
      }
    `).then(results => {
      results.data.allMarkdownRemark.edges.forEach(({ node }) => {
        createPage({
          path: `/posts${node.frontmatter.slug}`,
          component: path.resolve('./src/components/postLayout.js'),
          context: {
            slug: node.frontmatter.slug,
          },
        })
      })
      resolve()
    })
  })
}

我不太了解发生了什么,我回滚到一分钟前可以正常工作的更改,现在却收到了这个奇怪的错误。我尝试升级节点,尝试重新安装gatsby cli。我被困住了。预先感谢。

还包括我的package.json以防不兼容

{
  "name": "gatsby-starter-default",
  "description": "Gatsby default starter",
  "version": "1.0.0",
  "author": "Kyle Mathews <mathews.kyle@gmail.com>",
  "dependencies": {
    "babel-plugin-styled-components": "^1.9.2",
    "gatsby": "^2.0.53",
    "gatsby-image": "^2.0.22",
    "gatsby-plugin-manifest": "^2.0.9",
    "gatsby-plugin-netlify": "^2.0.6",
    "gatsby-plugin-netlify-cms": "^3.0.9",
    "gatsby-plugin-offline": "^2.0.16",
    "gatsby-plugin-react-helmet": "^3.0.2",
    "gatsby-plugin-sharp": "^2.0.15",
    "gatsby-plugin-sitemap": "^2.0.3",
    "gatsby-plugin-styled-components": "^3.0.4",
    "gatsby-source-filesystem": "^2.0.10",
    "gatsby-transformer-remark": "^2.1.15",
    "gatsby-transformer-sharp": "^2.1.9",
    "netlify-cms": "^2.3.0",
    "react": "^16.6.3",
    "react-dom": "^16.6.3",
    "react-helmet": "^5.2.0",
    "react-spring": "^6.1.10",
    "styled-components": "^4.1.2"
  },
  "keywords": [
    "gatsby"
  ],
  "license": "MIT",
  "scripts": {
    "build": "gatsby build",
    "develop": "gatsby develop",
    "start": "npm run develop",
    "format": "prettier --write \"src/**/*.js\"",
    "test": "echo \"Error: no test specified\" && exit 1"
  },
  "devDependencies": {
    "prettier": "^1.15.2"
  },
  "repository": {
    "type": "git",
    "url": "https://github.com/gatsbyjs/gatsby-starter-default"
  }
}

Gatsby -v返回2.4.7,我正在运行节点v10.14.2

这是我的gatsby-config文件

module.exports = {
  siteMetadata: {
    title: 'Project Name',
    content: 'your name is weird',
    siteUrl: 'https://zealous-wright-0d00e0.netlify.com',
  },
  plugins: [
    'gatsby-plugin-react-helmet',
    {
      resolve: `gatsby-source-filesystem`,
      options: {
        name: `images`,
        path: `${__dirname}/src/images`,
      },
    },
    'gatsby-plugin-sitemap',
    'gatsby-transformer-sharp',
    'gatsby-plugin-styled-components',
    'gatsby-plugin-sharp',
    {
      resolve: `gatsby-plugin-manifest`,
      options: {
        name: 'project-name',
        short_name: 'project-name',
        start_url: '/',
        background_color: '#663399',
        theme_color: '#663399',
        display: 'minimal-ui',
        icon: 'src/images/logo.png', // This path is relative to the root of the site.
      },
    },
    // this (optional) plugin enables Progressive Web App + Offline functionality
    // To learn more, visit: https://gatsby.app/offline
    'gatsby-plugin-offline',
    {
      resolve: 'gatsby-source-filesystem',
      options: {
        path: `${__dirname}/src/team`,
        name: 'team',
      },
    },
    {
      resolve: 'gatsby-source-filesystem',
      options: {
        path: `${__dirname}/src/images`,
        name: 'images',
      },
    },
    'gatsby-transformer-remark',
    'gatsby-plugin-netlify-cms',
  ],
}

我在gatsby-source-filesystem的{​​{1}}中有一个文件

2 个答案:

答案 0 :(得分:3)

我有一个非常愚蠢的错误,在我的markdown文件中,没有slug属性在我的代码中被引用。这就是它的样子

---
title: Riel's First post
bio: I am a monkey with a dog
slug: "test"
---
Testing

答案 1 :(得分:0)

您尚未发布gatsby-config文件,但从错误的角度来看,我想说您的节点文件找不到任何降价文件,从而导致未定义的results.data

在gatsby配置文件中,应该有一条与此指令相似的指令:

{
    resolve: `gatsby-source-filesystem`,
    options: {
        name: `posts`,
        path: `${__dirname}/static/content/collections/posts`,
    },
}

上面的代码指示gatsby在指定的路径中查找markdown文件,因此请确保在配置中包含此指令,并且该路径至少包含一个有效的markdown文件。