【问题标题】:Dynamic path works locally but not in production动态路径在本地有效,但在生产中无效
【发布时间】:2020-06-22 16:26:12
【问题描述】:
  1. 问题总结: 一种。我想使用路径在 Gatsby 中动态生成一个页面。我已经实现了question 中建议的技术。这种技术在本地工作,即在本地主机上,但是当我在生产中部署它时,我收到以下错误消息:

找不到页面 看起来您点击了一个损坏的链接或输入了一个 此站点上不存在的 URL。

预期结果:页面动态创建后,@reach/router 应该能够捕获路径中的 ID 并使其作为组件中的 props 可用。

实际结果:这在本地工作,但在生产中,浏览器向我抛出上述错误。 控制台错误:

加载资源失败:服务器响应状态为404()

  1. 到目前为止我尝试了什么?

在 gatsby-node.js 中:

exports.onCreatePage = async ({ page, actions }) => {
  const { createPage } = actions;


  if (page.path.match(/^\/resetpassword/)) {
    page.matchPath = "/resetpassword/*"

    createPage(page)
  }
}

在盖茨比页面resetpassword.js:

export default function ResetPassword() {
  return (
    <div>
      <Router basepath="/">
        <ResetWorker path="/resetpassword/:id" />
      </Router>
    </div>
  )
}

function ResetWorker({ id }) {

// Here I need to access the id to make a fetch call to my node.js backend

  return()
}

【问题讨论】:

标签: gatsby


【解决方案1】:

这可能对某人有用。这是我根据question 的答案解决问题的方法。 1. 我安装了 Gatsby Netlify 插件:gatsby-plugin-netlify 2.在gatsby-config.js的plugins数组中添加gatsby-plugin-netlify。 3. 在我的 Gatsby 项目的根目录下创建了一个 _redirects 文件,规则如下: /resetpassword/* /resetpassword/index.html 200

所需的页面是动态生成的。感谢 ksav 的建议。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-02-01
    • 1970-01-01
    • 1970-01-01
    • 2022-01-17
    • 2012-11-17
    • 1970-01-01
    相关资源
    最近更新 更多