我想从静态文件存储(Google Cloud Storage,AWS等价物是S3)提供React应用程序。
在过去,我只将React应用部署到NGINX服务器(或NGINX容器),在那里我可以配置所有请求指向index.html
,而不管请求的路径是什么,这样React Router就可以在客户端处理路由。
我很难理解这将如何在静态文件存储中工作,只需运行npm run build
并将构建的应用程序上传到云存储。
示例:据我所知,如果您请求<domain>/profile
,它将在静态文件存储中查找名为“profile
”的文件,如果不存在,则返回存储提供商的404页面。但我希望这是由React Router处理的,这意味着这个请求在技术上仍然返回index.html
页面,然后客户端的JavaScript查看URL并呈现配置文件页面组件或软404页面组件,我可以从我的React应用程序中自定义。
1条答案
按热度按时间ie3xauqp1#
好吧,6个月后,我现在有了答案,我分享它来帮助任何像我一样被卡住的人。
当配置GCS存储桶以服务于静态站点时,您可以选择将哪个文件用作索引页,以及在404上服务的文件。事实证明,您可以很容易地在单页应用程序(使用任何JavaScript框架)上实现客户端路由,方法是配置bucket,将所有返回404页的流量指向相同的
index.html
文件。这样,它仍然会呈现包含所有客户端路由逻辑的“单个页面”,并且它查看的路径将在URL中!TLDR;将
index.html
设置为您的自定义404页面。