wordpress - Gatsby-Source-Wordpress : Error when compiling. 类型错误:无法解构 'fields' 的属性 'nodesType',因为它未定义

标签 wordpress gatsby gatsby-plugin

当我尝试运行 gatsby develop 时,出现以下错误:


TypeError: Cannot destructure property 'fields' of 'nodesType' as it is undefined.
    at generateNodeQueriesFromIngestibleFields (/Users/repoFolder/Work/gatsby/node_modules/gatsby-source-wordpress/src/steps/ingest-remote-schema/buil
d-queries-from-introspection/generate-queries-from-ingestable-types.js:155:13)
    at buildNodeQueries (/Users/repoFolder/Work/gatsby/node_modules/gatsby-source-wordpress/src/steps/ingest-remote-schema/build-queries-from-introspe
ction/build-node-queries.js:25:25)
    at runSteps (/Users/repoFolder/Work/gatsby/node_modules/gatsby-source-wordpress/src/utils/run-steps.ts:41:9)
    at runSteps (/Users/repoFolder/Work/gatsby/node_modules/gatsby-source-wordpress/src/utils/run-steps.ts:43:9)
    at ingestRemoteSchema (/Users/repoFolder/Work/gatsby/node_modules/gatsby-source-wordpress/src/steps/ingest-remote-schema/index.js:49:5)
    at runSteps (/Users/repoFolder/Work/gatsby/node_modules/gatsby-source-wordpress/src/utils/run-steps.ts:41:9)
    at runAPI (/Users/repoFolder/Work/gatsby/node_modules/gatsby/src/utils/api-runner-node.js:487:16)


 ERROR #gatsby-source-wordpress_112003 

 gatsby-source-wordpress 

        Encountered a critical error when running the buildNodeQueries build step.
        See above for more information.

not finished createSchemaCustomization - 3.831s
not finished [gatsby-source-wordpress] ingest WPGraphQL schema - 2.379s

我没有进行任何更改或升级包,此后一直在从事其他项目。除了升级 gatsby-source-wordpress 插件外,我还尝试禁用 Related Posts 插件以及其他一些插件。

我正在像在我的 gatsby-config.js 中那样配置插件:

{
            resolve: "gatsby-source-wordpress",
            options: {
                url: `${process.env.WPGRAPHQL_URL}`,
                verbose: false,
                develop: {
                    hardCacheData: false,
                  },
                schema: {
                    perPage: 10, // currently set to 100
                    requestConcurrency: 3, // currently set to 15
                    previewRequestConcurrency: 1, // currently set to 5
                },
                type: {
                    Page: {
                        exclude: true,
                    },
                    Menu: {
                        exclude: true,
                    },
                    MenuItem: {
                        exclude: true,
                    },
                },
                debug: {
                    graphql: {
                      onlyReportCriticalErrors: true,
                    },
                },
                searchAndReplace: [
                    {
                        search: `${process.env.GATSBY_WORDPRESS_URL_PROTOCOL}://${process.env.GATSBY_WORDPRESS_URL_PATH}`,
                        replace: `${process.env.GATSBY_SITE_URL_PROTOCOL}://${process.env.GATSBY_SITE_URL_PATH}`,
                    },
                ],
                html: {
                    useGatsbyImage: true,
                },
            },
        },

并且我在gatsby-node.js中配置插件/构建节点,如下所示:

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

    const BlogPostTemplate = path.resolve("./src/templates/BlogPost.tsx")
    const BlogTagPostsTemplate = path.resolve(
        "./src/templates/BlogTagPosts.tsx"
    )
    const BlogCategoryPostsTemplate = path.resolve(
        "./src/templates/BlogCategoryPosts.tsx"
    )

    const BlogPostsResult = await graphql(`
        {
            allWpPost {
                edges {
                    node {
                        id
                        slug
                        uri
                        link
                        title
                        excerpt
                        date(formatString: "MMMM DD, YYYY")
                        modified(formatString: "MMMM DD, YYYY")
                        author {
                            node {
                                avatar {
                                    url
                                }
                                id
                                name
                                uri
                                slug
                            }
                        }
                        featuredImage {
                            node {
                                localFile {
                                    childImageSharp {
                                        gatsbyImageData(
                                            width: 1920
                                            placeholder: BLURRED
                                            formats: [AUTO, WEBP, AVIF]
                                        )
                                    }
                                }
                            }
                        }
                        categories {
                            nodes {
                                id
                                count
                                name
                                slug
                            }
                        }
                        tags {
                            nodes {
                                id
                                count
                                name
                                slug
                            }
                        }
                    }
                }
            }
        }
    `)

    if (BlogPostsResult.errors) {
        reporter.panicOnBuild("Error while running GraphQL query.")
        return
    }

    const BlogPosts = BlogPostsResult.data.allWpPost.edges

    BlogPosts.forEach((post, index) => {
        const date = post.node.date
        createPage({
            path: `/${post.node.categories.nodes[0].slug}/${moment(date).format(
                "YYYY"
            )}/${moment(date).format("MM")}/${post.node.slug}.html`,
            component: BlogPostTemplate,
            context: {
                id: post.node.id,
                slug: post.node.slug,
                uri: post.node.uri,
                previous: index === 0 ? null : BlogPosts[index - 1].node,
                next:
                    index === BlogPosts.length - 1
                        ? null
                        : BlogPosts[index + 1].node,
            },
        })
    })

    createPaginatedPages({
        edges: BlogPosts,
        createPage: createPage,
        pageTemplate: "src/templates/BlogPosts.tsx",
        pageLength: 10,
        pathPrefix: "blog",
    })

    const BlogTagPosts = new Map()
    const BlogCategoryPosts = new Map()

    BlogPosts.forEach((post) => {
        const tags = post.node.tags.nodes
        if (tags && tags.length > 0) {
            tags.forEach((tag) => {
                if (BlogTagPosts.has(tag.slug)) {
                    BlogTagPosts.set(tag.slug, [
                        ...BlogTagPosts.get(tag.slug),
                        post,
                    ])
                } else {
                    BlogTagPosts.set(tag.slug, [post])
                }
                if (BlogTagPosts.has(tag.title)) {
                    BlogTagPosts.set(tag.title, [
                        ...BlogTagPosts.get(tag.title),
                        post,
                    ])
                } else {
                    BlogTagPosts.set(tag.title, [post])
                }
            })
        }
        const categories = post.node.categories.nodes
        if (categories && categories.length > 0) {
            categories.forEach((category) => {
                if (BlogCategoryPosts.has(category.slug)) {
                    BlogCategoryPosts.set(category.slug, [
                        ...BlogCategoryPosts.get(category.slug),
                        post,
                    ])
                } else {
                    BlogCategoryPosts.set(category.slug, [post])
                }
                if (BlogCategoryPosts.has(category.title)) {
                    BlogCategoryPosts.set(category.title, [
                        ...BlogCategoryPosts.get(category.title),
                        post,
                    ])
                } else {
                    BlogCategoryPosts.set(category.title, [post])
                }
            })
        }
    })

    const BlogTagSlugs = [...BlogTagPosts.keys()]
    const BlogCategorySlugs = [...BlogCategoryPosts.keys()]
    //const BlogCategoryTitles = [...BlogCategoryPosts.keys()];

    if (BlogTagSlugs.length > 0) {
        BlogTagSlugs.forEach((BlogTagSlug) => {
            createPage({
                path: `/tag/${BlogTagSlug}`,
                component: BlogTagPostsTemplate,
                context: {
                    group: BlogTagPosts.get(BlogTagSlug),
                    slug: BlogTagSlug,
                    title: BlogTagPosts.get("tag.title"),
                },
            })
        })
    }

    if (BlogCategorySlugs.length > 0) {
        BlogCategorySlugs.forEach((BlogCategorySlug) => {
            createPage({
                path: `/category/${BlogCategorySlug}`,
                component: BlogCategoryPostsTemplate,
                context: {
                    group: BlogCategoryPosts.get(BlogCategorySlug),
                    slug: BlogCategorySlug,
                    title: BlogCategoryPosts.get("category.title"),
                },
            })
        })
    }
}

我从哪里开始?

我已经尝试升级包,删除配置文件中的配置选项,删除 node_modules、package-lock.json 并重新安装包。在尝试正常的 npm i 命令时,我确实遇到了错误,但通过添加标志 -legacy-peer-deps 修复了这个问题。

最佳答案

我也遇到了同样的错误,但是我在升级我的 WordPress 插件后遇到了这个错误。我很确定这是由于 WP GraphQL 的新版本 13.x。您可以通过将 WP GraphQL WordPress 插件降级到版本 12.3 来解决此问题。你可以捕获那个 v12 version here .还有关于此问题的更多信息,如果实现修复,可能会更新 here .

关于wordpress - Gatsby-Source-Wordpress : Error when compiling. 类型错误:无法解构 'fields' 的属性 'nodesType',因为它未定义,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/74612167/

相关文章:

php - 在 Woocommerce 中以编程方式自定义运费

javascript - 如果在 Gatsby 中,我不使用 GatsbyLinks,而是使用 <a> 标签,会发生什么情况?

reactjs - 增加超时限制 gatsby-source-wordpress-experimental

gatsby - GitHub 操作失败,出现 Gatsby 错误 : Input file contains unsupported image format

php - 将购物车项目存储在自定义 WordPress 电子商务插件的 cookie 或 DB 上

wordpress - wp_cron任务存储在Wordpress DB中的何处?

mysql - 透视 SQL 数据 - 将行分组为列

javascript - React/Gatsby 组件中的动态背景图片

javascript - Gatsby 中的 Polyfilling 集

markdown - 如何从单个 Markdown 文件创建多个页面?