【问题标题】:Problem with CreatePage API using gatsby and contentful使用 gatsby 和内容的 CreatePage API 问题
【发布时间】:2020-10-11 15:30:18
【问题描述】:

我正在尝试使用来自内容的数据生成单个团队成员的页面。使用内容数据创建页面是次要的,我主要担心的是 gatsby-node.js 文件无法使用 /${node.slug}

创建页面

这是 gatsby-node.js 文件

exports.createPages = async ({ graphql, actions, reporter }) => {
  const result = await graphql(`
     {
      allContentfulIndividualTeamMember {
        nodes {
          slug
        }
      }
    }
  `);
  if (result.error) {
    reporter.panic("error loading data", JSON.stringify(result.errors))
  }
  result.data.allContentfulIndividualTeamMember.nodes.forEach(node => {
    actions.createPage({
      path: `/${node.slug}`,
      component: require.resolve("./src/Templates/individualTeamPage.js"),
      context: {
        slug: node.slug,
      },
    })
  })
}

这是我的个人团队成员模板文件

import React from "react"
import { graphql } from "gatsby"
const IndividualTeamPage = ({ data }) => {
  console.log("checking ")
  return (
    <div>
      <h1>Checking</h1>
      <p>{data.edges.node.nameOfTheEmployee} </p>
    </div>
  )
}

export default IndividualTeamPage
export const query = graphql(`
  query($slug: String!) {
    allContentfulIndividualTeamMember(filter: { slug: { eq: $slug } }) {
      edges {
        node {
          positionInTheCompany
          nameOfTheEmployee
        }
      }
    }
  }
`)

更新: 我认为问题是由于我将 gatsby 中的 pages 文件夹更改为 Pages 引起的,我改回 pages 并删除并安装了 node_modules。我仍然无法以编程方式创建页面,如果它有帮助 [成功运行页面查询 - 0.035s - 3/3] 每当我运行 gatsby develop 时,我都会在终端中得到这个

【问题讨论】:

  • 确保字段 slug 正在返回一些东西。你能告诉我们终端输出错误或graphql游乐场错误吗?

标签: graphql gatsby contentful


【解决方案1】:

Looks like it's graphql`&lt;Content&gt;` not graphql(`&lt;Content`)&gt;

【讨论】:

【解决方案2】:

您确定要使用该查询从 Contentful 检索值吗?我的猜测是:

  const result = graphql(`
    query {
      allContentfulIndividualTeamMember { 
       edges {
          node {
            slug
          }
        }
      } 
    }   
`)

注意edges 对象和node(而不是节点s)。

所以你的循环对象是:result.data.allContentfulIndividualTeamMember.edges.node.forEach()

【讨论】:

  • 我不认为这是问题所在,我确信我的代码正在检索值,我现在注意到的是最初我将 gatsby 中的 pages 文件夹重命名为 Pages。文件系统无法找到第一个页面,我现在已将其更改为页面,它弄乱了本地节点模块,我将其删除并再次执行 npm i,那里没有运气。我想我必须在新页面中重做这个页面的一部分项目
  • 问题中未提供该信息。你想编辑它并重新提问吗?当然,这就是问题所在。 Gatsby 的文件系统以特定的命名和路径方式工作。更改它需要在项目中进行大量更改以保持初始解决方法。
猜你喜欢
  • 2020-11-09
  • 1970-01-01
  • 2020-12-09
  • 1970-01-01
  • 2021-03-17
  • 2021-03-17
  • 2021-07-25
  • 1970-01-01
  • 2022-01-14
相关资源
最近更新 更多