undefined - 类型错误 : Cannot read property 'allMarkdownRemark' of undefined - on Gatsby

标签 undefined gatsby

我有问题的图像以及出现问题的代码片段。 有什么帮助吗?

import React from "react";
import Link from "gatsby-link";
import Helmet from "react-helmet";

import "../styles/blog-listing.css";

export default function Index({ data })
{

const { edges: posts } = data.allMarkdownRemark;

  return (
    <div className="blog-posts">
      {posts
        .filter(post => post.node.frontmatter.title.length > 0)
        .map(({ node: post }) => {
          return (
            <div className="blog-post-preview" key={post.id}>
              <h1>
                <Link to={post.frontmatter.path}>{post.frontmatter.title}</Link>
              </h1>
              <h2>{post.frontmatter.date}</h2>
              <p>{post.excerpt}</p>
            </div>
          );
        })}
    </div>
  );
}

enter image description here

最佳答案

您需要有graphql查询来选择Markdown文件。查询结果将作为 props 中的 data 对象传递。您可以尝试在文件末尾添加如下查询:

export const pageQuery = graphql`
  query BlogQuery() {
    allMarkdownRemark(sort: {order: DESC, fields: [frontmatter___date]}) {
      totalCount
      edges {
        node {
          excerpt(pruneLength: 400)
          id
          timeToRead
          fields {
            slug
          }
          frontmatter {
            title
            category
            date(formatString: "YYYYMMDD")
          }
        }
      }
    }
}
`

关于undefined - 类型错误 : Cannot read property 'allMarkdownRemark' of undefined - on Gatsby,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51603589/

相关文章:

javascript - 根据随机数记录对象的数学函数

gatsby - 使用Gatsby的Intercom插件集成Intercom

gatsby - Gatsby 错误 'Page data from page-data.json for the failed page "/"' 仅适用于 Netlify

gatsby - 如何将特定的上下文注入(inject)到 Gatsby 的所有页面中?

javascript - 为什么我在运行 changeword.js 时会得到未定义的字样?

jquery - Typed.js - 未定义不是函数

Facebook 无法识别 Netlify 上的一些 Gatsby React Helmet 元标签

javascript - 使用 Gatsby Js 在单击 anchor 时 react 切换事件类

jquery - 带有 jQ​​uery 的 HTML5 - e.offsetX 在 Firefox 中未定义

javascript - 当我认为 JavaScript 代码已定义时,出现 "not defined"错误