批量导入循环遍历引发的兼容性问题
2021-06-25 本文已影响0人
误入IT的人
在上一篇文章中我们展示了项目中过滤器的正确使用方式,文章地址:
https://www.jianshu.com/p/48fd5287f87e
但是在批量导入过滤器实际开发过程中,遇到了一些兼容性问题,特此记录。
主要区别就是filter文件夹下的index.js文件中的遍历获取过滤器的逻辑
以下是错误代码演示:
files.keys().forEach((key) => {
let obj = files(key).default;
let keyObj = Object.keys(obj)[0];
console.log('values -- ',Object.values(obj))
//可能导致错误的方法Object.values
//正常情况下value取出来是一个function即过滤器的实现方法。
//但是在一些低版本的安卓机器上value的值取出来是跟 keyObj 一样的字符串,导致了使用此过滤器的页面抛错
let value = Object.values(obj)[0];
Vue.filter(keyObj, value);
});
正确的情况下通过Vconsole查看日志
可以看到values里面的元素都是function
错误的情况下通过Vconsole查看日志
可以看到values数组里面的元素都变成了字符串,导致在使用过滤器的时候报错 TypeError: e._f(...) is not a function
注
此问题本质的原因目前还没查出来,目前从现象看可能跟require.context之后Object.values取值有关系