前面已經(jīng)把項目跑起來了添祸,且能正常渲染艳馒,當(dāng)我正在沾沾自喜的時候拦惋,測試狠狠的給了我一記大嘴巴
遇見的問題是匆浙,在我本地調(diào)試的設(shè)備上運行沒有問題,提交到測試的時候厕妖,他用自己的安卓設(shè)備安裝軟件首尼,出現(xiàn)了如下報錯
這個報錯告訴咱,說 replaceAll 不是一個函數(shù),那怎么解決呢软能,先去項目里搜吧
一搜迎捺,發(fā)現(xiàn)是 Cesium 包里面的調(diào)用,假設(shè) Cesium 沒有這種低級 Bug查排,那就是這個 api 本身的問題了凳枝,先問問 gpt
可以看到語法比較新,因為我們用法?Cesium?是動態(tài)引入的且 Cesium 文件本身就很大跋核,所以岖瑰,會跳過 uniapp 的這個 ES6 -> ES5 的流程
再去 mdn 上搜一下這個 api
然后懷疑,考慮是某些安卓設(shè)備的 js 引擎不支持這個 api砂代,那怎么解決呢蹋订?很簡單,在 String 原型上添加一個這樣的 api 并能實現(xiàn)全局替換就行了
mdn 下面寫了 xxxx polyfill刻伊,大概在兩年前我有幸了解過這個概念露戒,地址在這?
https://www.bilibili.com/video/BV12q4y1E7Gg/?spm_id_from=333.999.0.0&vd_source=78a1c24507da39c051cd276e2fbd5585
然后去網(wǎng)上搜一個?replaceAll 的 polyfill
https://juejin.cn/s/string.replaceall%20polyfill
找到了如下代碼,經(jīng)過自己簡單驗證捶箱,可以替代示例中的寫法玫锋,但是沒有完全替代 mdn 描述的,mdn 說如果不是全局正則表達(dá)式讼呢,會拋出異常
本人驗證結(jié)果如下撩鹿,入?yún)⒌恼齽t沒有 /g 也正常正常通過了
雖然和 mdn?描述的不一樣,但是目前滿足我的使用需求了悦屏,本人的需求就是能把不支持此 api 的安卓設(shè)備节沦,在原型上添加一個這樣的 api 并能實現(xiàn)全局替換就行了
然后,添加到 Cesium 執(zhí)行前的代碼中础爬,再次編譯甫贯,運行,報錯消失
完整的 uniapp + cesium 項目地址在這看蚜,需要自取
https://github.com/kmq116/mars3d-uni-app
本文使用 文章同步助手 同步