美文网首页
批量导入循环遍历引发的兼容性问题

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

作者: 误入IT的人 | 来源:发表于2021-06-25 15:03 被阅读0次

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

    相关文章

      网友评论

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

          本文链接:https://www.haomeiwen.com/subject/lacoyltx.html