网站Map-WordPress:编译时出错,类型错误:无法解构'nodesType'的属性'fields',因为它未定义

b0zn9rqh  于 2022-12-03  发布在  WordPress
关注(0)|答案(3)|浏览(116)

当我尝试运行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插件之外,我还试着禁用其他一些插件。
我正在配置插件,就像在我的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,
                },
            },
        },

and I am configuring the plugin / constructing the node in按节点访问. js like the following:

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"),
                },
            })
        })
    }
}

我该从哪里开始呢?
我试过升级软件包,去掉配置文件中的config选项,删除node_modules,package-lock.json,然后重新安装软件包。当我尝试正常的npm i命令时,我确实遇到了错误,但通过添加-legacy-peer-deps标志可以修复。

bfnvny8b

bfnvny8b1#

我在WP Graphql版本1.13.4上遇到了同样的错误,现在回滚到版本1.12.2修复了它。

5cg8jx4n

5cg8jx4n2#

回滚到1.12.2。可以在此处找到版本https://github.com/wp-graphql/wp-graphql/releases
一旦回滚然后盖茨比成功地从WP拉。

vlju58qv

vlju58qv3#

回滚到1.12.2版本也修复了这个问题,但是回滚时,我的媒体库不再显示gatsby graphql插件的所有媒体项。我不得不重新上传没有显示的媒体项。我强烈建议在回滚之前备份你的网站。

相关问题