未处理的拒绝(错误):预期未定义为GraphQL模式

时间:2019-05-30 22:07:50

标签: javascript graphql gatsby

我正在尝试构建从WordPress导入的帖子页面,我运行“ gatsby开发”,然后转到URL。 首页闪烁,然后出现此错误:

Unhandled Rejection (Error): Expected undefined to be a GraphQL schema.
invariant
C:/Users/Phil/Repositories/Zym/node_modules/graphql/jsutils/invariant.mjs:12
assertSchema
C:/Users/Phil/Repositories/Zym/node_modules/graphql/type/schema.mjs:25
validateSchema
C:/Users/Phil/Repositories/Zym/node_modules/graphql/type/validate.mjs:31
graphqlImpl
C:/Users/Phil/Repositories/Zym/node_modules/graphql/graphql.mjs:44
(anonymous function)
C:/Users/Phil/Repositories/Zym/node_modules/graphql/graphql.mjs:20
graphql
C:/Users/Phil/Repositories/Zym/node_modules/graphql/graphql.mjs:18

在“ PostTemplate.js”中突出显示的查询:


export const query = graphql`
  query($id: String!) {
     wordpressPost(id: { eq: $id }) {
      date
      title
      slug
      content
      categories {
        name
      }
    }    
  }
`;

我通过GraphiQL接口运行相同的查询,并且向我发送了数据?

真的不确定我在这里做错了什么,请参阅gatsby-node.js的波纹管

exports.createPages = ({ actions, graphql }) => {
  const { createPage } = actions


      return graphql(`
        {
          allWordpressPost {
            edges {
              node {
                id
                slug
                status
              }
            }
          }
        }
      `)
    .then(result => {
      if (result.errors) {
        result.errors.forEach(e => console.error(e.toString()))
        return Promise.reject(result.errors)
      }

      const postTemplate = path.resolve(`./src/templates/PostTemplate.js`)


      const posts = result.data.allWordpressPost.edges

      _.each(posts, ({ node: post }) => {
        createPage({
          path: `/${post.slug}/`,
          component: postTemplate,
          context: {
            id: post.id,
            slug: post.slug
          },
        })
      })
   })
})

我尝试更新gatsby-cli -g,并卸载了node_modules。

2 个答案:

答案 0 :(得分:1)

我认为您的查询在gatsby-node.js文件中的格式不正确。应该如下:

return graphql(`
    query {
        allWordpressPost {
            edges {
                node {
                    id
                    slug
                    status
                }
            }
        }
    }
`);

尝试一下,让我知道是否适合您。

答案 1 :(得分:0)

我遇到了相同的错误,并且可以通过确保直接从graphql导入gatsby来解决该问题:

导致错误的原因:

// template file
import { graphql } from 'graphql'

如何修复:

// template file
import { graphql } from 'gatsby'