在Gatsby中禁用客户端路由

时间:2019-01-04 20:05:30

标签: amazon-s3 gatsby

是否可以在Gatsby中禁用客户端路由?

我正在使用Gatsby生成一个静态页面,该页面只有一页,并将通过AWS / S3提供服务​​。我遇到了由Gatsby在页面和Gatsby运行时加载后从URL删除对象后缀(https://s3.amazonaws.com/top-bucket/sub-bucket/index.html变为https://s3.amazonaws.com/top-bucket/sub-bucket/)引起的问题。如果禁用JavaScript,则不会发生此问题,因此,我可以肯定这是由Gatsby使用React / Reach Router引起的。

有什么办法可以禁用此行为?我知道我可能可以在S3上设置重定向以处理对存储桶的请求,但如果可能的话,我宁愿在应用程序级别执行此操作。

2 个答案:

答案 0 :(得分:1)

这是一种黑客行为,可能无法在任何其他人的应用程序中运行,也可能无法与以后的Gatsby版本一起使用,但是我可以通过在gatsby-browser.js中设置window.page.path = window.location.pathname;来防止这种重定向。此短路会使production-app.js中的条件检查短路,从而试图“使规范路径与实际路径匹配”,并导致上述(IMO)意外行为。

答案 1 :(得分:0)

这个问题已经很老了,但是希望对您有所帮助,我使用了这个插件:https://github.com/wardpeet/gatsby-plugin-static-site

npm install @wardpeet/gatsby-plugin-static-site --save

并将其添加到gatsby-config.js

plugins: [{
  `@wardpeet/gatsby-plugin-static-site`,
}]

然后禁用了客户端路由!