我有一个使用create-react-app构建的应用程序,并且正在Firebase托管中托管。使用npm start
在开发过程中,一切在本地都可以正常工作。
当我部署到Firebase时,该站点可以正常加载并且可以正常工作。但是只加载第一页。
刷新页面后,我会在Firebase上托管的JS文件中收到有关无效Javascript的错误。
Uncaught SyntaxError: Unexpected token <
在Chrome网络检查器中,它表示JS文件是从“内存缓存”中加载的,并且在网络检查器中查看响应后,表明Chrome正在获取index.html内容,而不是JS文件内容。
在一个新的浏览器中再次进行此实验,表明Chrome实际上在初始页面加载中获取了实际的JS。
似乎有关内存缓存的某些操作不正确。进行“空缓存和硬重装”似乎并没有使Chrome实际再次拉出文件-它仍在使用内存缓存。
更多详细信息
我在SPA模式下使用Firebase托管,在该模式下,所有路径**
都被重写为index.html。尽管如此,静态变量(JS,CSS,字体,图像)也可以很好地加载,因此Firebase必须足够聪明才能处理该问题。
只有JS文件无法正确缓存。例如,CSS文件可以很好地加载。
似乎其他静态变量也位于磁盘缓存中,而JS文件位于内存缓存中。
如果我重新部署新代码(因此更改JS路径以避免缓存),则该站点将再次正确加载一次,那么就会遇到相同的问题。