批量导入循环遍历引发的兼容性问题

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查看日志

正确的日志.jpeg

可以看到values里面的元素都是function

错误的情况下通过Vconsole查看日志

错误的日志.jpg

可以看到values数组里面的元素都变成了字符串,导致在使用过滤器的时候报错 TypeError: e._f(...) is not a function


此问题本质的原因目前还没查出来,目前从现象看可能跟require.context之后Object.values取值有关系

上一篇下一篇

猜你喜欢

热点阅读