アイキャッチアイコン

GatsbyJSでビルド時に TypeError: resolvePages is not a function が発生

2021-06-25

発生したエラー

gatsby build 時に下記エラーが発生。

error "`" threw an error while running the onPostBuild lifecycle:
resolvePages is not a function
  46 |   queryRecords = _yield$graphql.data;
  47 |   _context.next = 8;
  48 |   return Promise.resolve(resolvePages(queryRecords)).catch(function (err) {
     |                          ^
  49 |     return reporter.panic(_internals.REPORTER_PREFIX + " Error resolving Pages", err);
  50 |   });
  51 |


  TypeError: resolvePages is not a function

原因

gatsby-plugin-sitemap のバージョンが上がったため、 gatsby-config.js に書いている処理が正しく処理できていないものと思われる。

{
  resolve: `gatsby-plugin-sitemap`,
  options: {
    output: `/sitemap.xml`,
    createLinkInHead: true,
    exclude: [`/category/`,`/category/*`, `/tags/`, `/tags/*`],
    query: `
      {
        site {
          siteMetadata {
            siteUrl
          }
        }
        allSitePage {
          nodes {
            path
          }
        }
    }`,
    serialize: ({ site, allSitePage }) =>
      allSitePage.nodes.map(node => {
        return {
          url: `${site.siteMetadata.siteUrl}${node.path}`,
          changefreq: `weekly`,
          priority: 0.5,
        }
      })
  }
}

上記の exclude がどこかのバージョンからか excludes に変更になっている模様。単純に exculudes に修正した際に、上記エラーが発生した。

解決策

ひとまず gatsby-plugin-sitemap のバージョンを @^3.3.0 にすることで解消。


プロフィールアイコン

yoshiba

医療機関向けシステムのエンジニアをしています。 フロントエンドが好きで、最近はJamstackに夢中です。

© 2022, yoshiba All rights reserved.