我的基本静态React Redux TypeScript应用程序在Windows上本地工作,然后当我为我测试过的所有设备部署到GitHub Pages时,它也能工作,iPhone 6 iOS 12.0.1除外(它是一个空白的白色屏幕(。
我研究过很多文章,比如:
-
React/redux应用程序在Safari 上呈现空白屏幕
-
React/Node Uncaught SyntaxError:意外的令牌<
-
为什么在gh页面上部署的react应用程序在不同的浏览器上显示空白页面,而在我的浏览器上正确显示?
-
https://stackoverflow.com/a/57027870/470749
-
https://community.netlify.com/t/react-application-builds-deploys-into-a-blank-page/2571
-
https://github.com/facebook/create-react-app/blob/061d1e46fcd4766d38b45499c3d29cfaa2b7d0af/packages/react-scripts/template/README.md#github-页面
-
https://caniuse.com/#feat=es6
他们中的大多数人都试图解决所有设备都显示白色页面的情况。但这不是我的设想。
其他人谈到了旧浏览器如何需要polyfill,但我已经在使用fetch
时添加了try/catch块。
我也尝试过在package.json
中更改为"homepage": "."
,但我再次认为这与问题无关,因为大多数浏览器已经可以工作了,所以我知道资产正在被访问。
有什么想法吗?
最后我想起我可以使用免费的http://xip.io/服务,从我的iPhone浏览到我的Windows机器上托管的"本地"React服务器。
这样,我就可以看到在生产中看不到的错误消息(在GitHub页面上(。
我发现错误是"ReferenceError:找不到变量:IntersectionObserver">
因此,解决方案是使用polyfill。
查看有用的链接:
- https://stackoverflow.com/a/55767479/470749
- https://stackoverflow.com/a/59368511/470749
- https://github.com/mhartington/lazy-load-image/issues/1#issuecomment-372384646
- https://webkit.org/blog/8582/intersectionobserver-in-webkit/
- https://caniuse.com/#feat=intersectionobserver
"IntersectionObserver API自12.2起在iOS Safari上受支持。"这解释了为什么它在其他iPhone上有效,但在我的iPhone上无效。