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

在上一篇文章中我们展示了项目中过滤器的正确使用方式,文章地址:
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取值有关系

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容