Inline worker is not supported 日期:2024-09-14 分类:1 人气:370 有个项目中用到了Worker通信,这是一个ar.js的项目,初始页面时相机一直加载不出来,最后经过调查发现卡在了worker通信这一步,框架中构造worker的方式是: ``` import Worker from "./arjs-markercontrols-nft.worker.js"; ... var worker = new Worker(); worker.postMessage({ type: "init", pw: pw, ph: ph, marker: descriptorsUrl, param: arController.cameraParam, }); ``` `postMessage`消息发出去worker一直没有回应,我就认为是通信的问题,调查了半天都没有发现原因,代码都是正确的,本地也可以跑起来,怎么部署到外网就不行了。 一顿调试Worker,然后各种调试,就是通信不成功,手机调试ar,错误信息显示很不友好,用了`eruda`辅助调试也有点不太方便,电脑上没有摄像头又调试不了。 今天换了一个带摄像头的笔记本来调试,结果神奇的事情出现了,在手机上不显示的调试信息居然在电脑上显示了,子进程的work输出了调试信息,这说明通信没有问题。 用手机调试了半天也没有调试信息,我还以为是通信不成功,这真是一个坑啊。 最终用电脑调试发现了问题,是资源的路径不正确。 #### 问题 在页面中设置了base后,页面中资源都是相对于这个路径的,但是这仅仅相对于传统的静态资源而言 ``` <base href="/ar/"> ``` 用了ar.js框架之后,资源的路径中还是要加上这路径,之前这样写是找不到资源的 ``` <a-nft id="nft-ctp" type="nft" marker-handler url="./assets/image-tracking/ctp/ctp-image/ctp"></a-nft> ``` 要改成这样才行 ``` <a-nft id="nft-ctp" type="nft" marker-handler url="./ar/assets/image-tracking/ctp/ctp-image/ctp"></a-nft> ``` 走了几天的弯路,以后调试还是使用电脑的比较稳妥。 ### 鸣谢 - [知乎**paranoidjk**](https://zhuanlan.zhihu.com/p/695068560) 标签: worker javascript 上一篇:七棵菜表单快速开发平台二次开发步骤 下一篇:RuntimeError: abort(TypeError: fetch failed) at Error 随便看看 2024-02-19 PHP7 运算符“??” 和“?:”的区别 2022-11-30 Linux 后台运行命令 2022-11-25 关于我们 2022-11-30 centos一键系统安装lnmp集成环境 2022-11-30 linux 生成 ssh 公钥 留言