最近公司搞一个h5项目、又一个扫码的功能、要调用终端设备,因为对方的开发人员没在这边、所以让我来写一个rn的套壳app、跑一边流程;结果打包完、给我静态资源后、发现白屏;
因为此项目也要能离线访问、所以需要将静态资源直接嵌入到webview中、所以h5打包完之后,直接嵌入webview;
一开始白屏、我以为是rn这边的webview有问题、做了一下工作排查;
1、自己写了测试的html嵌入进去没问题、
2、写了node本地服务、把文件托管到静态服务上、嵌入对应地址,没问题;
我想可能是h5有问题、于是我嵌入本地开发地址、发现是可以的;
然后我又打开打包后dist下的index.html 发现本地浏览器打开也是白屏;报如下错误
原来打出来的包、路由使用了history模式、恍然大悟;
如果是history模式,比如进入项目要redirect到/login下、那么会把/login当作get请求去获取对应资源地址、如果在服务器、那么返回index.html 做渲染、在本地是没法请求的;所以这种模式也是错误的;
于是让他们改成hash模式、发现打开后有资源引用不正确、这里我们在往app嵌的时候,需要将打包后的资源引用路径做一修改、在配置文件中将publicPath改为’./’;
打完包嵌入apk ok