注意:当前在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)
    	}
    });
});
Logo

为开发者提供学习成长、分享交流、生态实践、资源工具等服务,帮助开发者快速成长。

更多推荐