通过 Gatsby createPages 节点 api 创建的页面,在部署到 Github 页面时不起作用

Pages created via the Gatsby createPages node api, not working when deployed to Github Pages

我正在使用 Gatsby createPages 节点 api 创建一些页面,如下所述:https://www.gatsbyjs.com/docs/programmatically-create-pages-from-data/#creating-pages

但是当我部署到 github 页面时,这些页面给出了 404,例如这个页面:https://giorgioremindme.github.io/probable-future

这是我的 gatsby-node-js 中的内容:

const fs = require(`fs`)
const yaml = require(`js-yaml`)
exports.createPages = ({ actions }) => {
  const { createPage } = actions
  const ymlDoc = yaml.safeLoad(fs.readFileSync(`./src/content/index.yaml`, `utf-8`))
  ymlDoc.forEach(element => {
    createPage({
      path: element.path,
      component: require.resolve(`./src/templates/basicTemplate.js`),
      context: {
        pageContent: element.content,
        links: element.links,
      },
    })
  })
}

https://github.com/GiorgioRemindme/giorgio-martini/blob/main/gatsby-node.js

虽然本地工作正常...

您可以通过单击您在此页面上看到的缩略图来访问这些新页面:https://giorgioremindme.github.io/giorgio-martini/code 忽略最后一个缩略图,它已损坏,缺少有效的 link,但其余的在本地工作,但未部署。

关于我需要做什么才能使此页面在部署时正常工作有什么想法吗?

如果您输入:https://giorgioremindme.github.io/giorgio-martini/code(没有尾部斜杠。您可以通过单击 header 中的“代码”link 将其删除)。

然后您导航,该网站运行流畅,没有 404 returned。

但是,如果您输入 https://giorgioremindme.github.io/giorgio-martini/code/(注意结尾的斜线),您的网页在尝试导航到它们时会 return 出现 404。

您的 gatsby-node.js 没有任何问题,因为页面已正确创建并且存在。您的问题在您的 in-app linking/navigation 中,因此在视图中。

尽管如此,我的猜测是您在手动添加路径前缀 /code 而 Gatsby link 应该自己做。手动构建 link 时尝试使用 withPrefix helper

Double-check 此行为和本地构建以确定问题的根源在哪里(本地或 GitHub 的环境中),因为解决方案可能会有所不同。