最近在部署服务器的时候遇到了一个问题,就是react项目使用serve -l 80来部署服务器,我们访问子路由的时候会出现下面这个页面
我们都知道serve启动成功是这样的
分为Local和On Your Network两种一个是你的本地localhost一个是你的以太网IPv4地址,我们用这两个url都能访问到我们的项目,但是我们会发现谷歌浏览器在用下面的公网地址时候就会报一个Error during service worker registration: DOMException: Only secure origins are allowed (see: https://goo.gl/Y0ZkNV).
我们继续点进去看看他说些什么
主要就看我圈出来的那些匹配规则,我们可以发现localhost是在这里面的,而公网ip那种形式,是被认为不安全的,所以在子路由下面去刷新页面,由于是重新用url去访问了那个地址,但是他不符合规范,所以匹配不到那个路由下面的组件。
解决方案的话这里我认为有两种,前者就是给你的服务器装个https证书,当然成本会比较高。后者就是在命令里面加入个-s参数也就是serve -s -l 80这样就可以让404页面重新回到index.html这样刷新就不会导致报404
因为毕竟是自己做的小网站所以用serve这个启动起来,然后给服务器的公网ip解析一个域名,基本就满足了日常需求了,浏览器的报错就忽略吧。如果是大公司,那肯定就不是这一套了,会有专门的架构师处理这些问题,而我暂时能力有限,只能想出这样的方案,还请大神们多多指教。