首页 > 解决方案 > Gatsby V3 在 deletePage 后不在 onCreatePage 函数中创建页面

问题描述

最近我将我的项目从 gatsby V2 迁移到 V3,迁移后,一些代码无法正常工作。

我正在使用并且现在需要实现的场景:

  1. 我的文件夹下有不同的子/pages文件夹,每个子文件夹都有index.js文件并命名为大写
  2. 在函数gatsby-node.js中的文件中,onCreatePage我删除了带有deletePage函数的页面,并创建了一个带有不同createPage功能的新页面。

我的gatsby-node.js代码:

export const onCreatePage = ({ page, actions }) => {
  const { deletePage, createPage } = actions;

  const page_path = toLower(page.path);

  deletePage(page);

  if (page.componentPath === `${__dirname}/src/pages/HomePage/index.js`) {
    // create a new page but with '/' as path
    createPage({ ...page, path: '/' });
  } else if (page_path.match(/^\/account/)) {
    page.matchPath = '/account/*';

    // Create the new page.
    createPage({ ...page, path: page_path });
  } else if (
    page_path.match(/^\/kitchensink/) &&
    process.env.NODE_ENV === `production`
  ) {
    //pass
  } else {
    // create a new page but make slug all lowercase as page subfolders are named uppercase
    createPage({ ...page, path: page_path });
  }
};

迁移后,此方法删除页面但不创建新页面,似乎createPage功能不再起作用或出现问题。结果,我没有得到任何页面,因为它被删除了,它也没有出现在public文件夹结构中。

也许我没有发现我的错误,尝试了许多不同的方法来解决问题但没有奏效。

有什么方法可以强制 gatsby URL 为小写?

谢谢你的帮助

标签: reactjsgatsby

解决方案


问题在这里解决了


推荐阅读