安卓访问钉钉H5项目显示内容空白,但有标题

注意:当前在vue2.0框架+node-15.4.1,本地运行的项目在微信、其他浏览器上运行都是正常显示,甚至是苹果在钉钉上访问都没问题,就唯独安卓在钉钉上访问,有标题,但页面内容为空…(本篇博客侧重点是为了记录解决问题的过程,如果最终没有解决你的问题,也希望勿喷~)
先贴上大致的项目目录结构
在这里插入图片描述

一、在网上查找相关的解决办法(尝试以下的方法都无效)

  1. 在webpack配置项rules中babel-loader添加resolve(‘config’)
    在这里插入图片描述

二、根据项目执行顺序进行排查

  1. 在index.html中添加alert弹窗,发现弹窗正常执行。因为安卓在访问的时候明显是有页面标题显示,说明至少index.html是可访问的,
  2. 在index.html添加vconsole插件,查看项目运行的元素(elements)、控制台(console)、网络请求(network)情况
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述

元素:#app的元素内是空的,说明并没有走到new Vue({}),或者说new Vue({})没有执行完就被阻塞了。
控制台:发现一个报错 script error,脚本执行错误。
网络:只有一个页面正常的socket连接请求。

  1. 弄清楚到底是没执行mainJS还是执行了被终止了

最开始也是加了一个alert弹窗,发现没有弹出,以为是没执行,后面故意制造一个报错,值得高兴的是报错被打印了,那就是说明程序是运行被终止了,而且至少是运行了mainJS。

  1. 在mainJS上一个个注释引用的插件

最终发现报错是从路由那边引起的,然后尝试将路由内的权限校验、meta配置等等注释,发现报错依然存在,索性直接将路由项只写了一个简单页面(就只有一个div标签,其他都是默认配置),发现安卓可以正常访问,这个时候大致可以判断是我原先要访问的页面(为了方便,后续称作A页面)内的问题,确保万无一失,把路由只配置原先访问的页面,发现不能正常访问,这就算确定是A页面出现的问题。

  1. A页面一个个注释引用的插件

确定了问题出在近期添加的一个扫码插件(html-qrcode)

  1. 尝试解决扫码插件的兼容性问题

一开始将扫码插件的依赖也加入到babel-loader中,没有效果还出现一系列警告,script error报错仍存在
在这里插入图片描述

经过网上了解到,很多扫码插件,为了安全性,只允许本地或者带着https的域名访问,在本地运行项目的时候,在配置跨域(proxy)的地方添加https: ture,重新运行项目即可解决问题。

  1. 最后总结

一开始觉得是因为内容为空的,再加上以为mainJS都没有执行,所以没有检查思路,只是一味的上网搜索相关解决方案,有了这次的经历之后,才明白自己的基础功还是太差了,缺乏冷静思考

因为这个项目是只在钉钉上运行,又加上一些其他的原因测试服务器不方便配置https服务,我考虑换了一款利用钉钉第三方sdk的扫码,是真的很方便。原文链接

cnpm install dingtalk-jsapi   // 下载dingtalk-jsapi

import * as dingtalk from 'dingtalk-jsapi';  // 局部引入

// 方法使用
dingtalk.ready(function () {
    dingtalk.biz.util.scan({
    	type: 'all', // type 为 all、qrCode、barCode,默认是all
    	onSuccess: function (data) {
        	//对返回的数据进行转换
    	},
    	onFail: function (err) {
        	console.log(err)
    	}
    });
});
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

扛着猪头敲代码

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值