禁用客户端路由

时间:2020-11-10 21:41:17

标签: gatsby

我有一个静态页面,该页面由Go Application根据请求的路径呈现(带有其他数据)。 效果很好,但是React无法加载,因为Gatsby无法根据给定的路径找到page-data.json。

我已经尝试使用'@ wardpeet / gatsby-plugin-static-site'插件禁用客户端路由,但是问题仍然存在。

我将默认的gatsby模板与经过修改的html.js一起使用,并且不带任何或标签。

我想完全禁用客户端路由(并删除app-data.json / page-data.json文件)或至少将任何请求路由到同一文件,因此无论域路径如何,我都可以部署站点

预先感谢

1 个答案:

答案 0 :(得分:0)

我不确定我是否正确理解了你的情况,但我总结了以下几点:

  • 在浏览器中运行后,盖茨比无法找到您的app-data.jsonpage-data.json文件;
  • 您的Gatsby网站似乎是通过非根路径提供的(例如www.example.com/some/more/path/(gatsby site))。

如果仅此而已,那么您想要的只是在构建盖茨比站点时set a "Path Prefix"。简而言之,您需要做的是:

  1. 在您网站的gatsby-config.js中,导出一个名为“ pathPrefix”的属性,该属性指定将从其提供网站服务的路径。例如:
module.exports = {
  pathPrefix: `/blog`,
}
  1. 构建站点时,请将标志--prefix-paths传递到gatsby命令。例如:
gatsby build --prefix-paths

这两个步骤都是必需的,否则,您将看不到任何区别。完成此操作后,客户端Gatsby应用程序应该能够正确提取所有必需的文件。

您不需要禁用客户端路由。客户端路由几乎总是一件好事,因为它可以大大加快页面之间的导航。您应该删除该插件。