我正在尝试构建从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。
答案 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'