在本地跑没有报错到测试就出现报错的代码

495 阅读1分钟

vue2项目最近有一个需求特别赶,在本地快速开发完之后就丢到测试环境中去了。测试中页面没有出现以下相关内容的报错,一切都很正常。

有一个其他的bug,然后打开测试控制台一打开咋这么多报红的,但是不影响正常显示判断,本地咋都没有出现

以下为这次出现的报错内容

1. Cannot read property ‘$router‘ of undefined

原因:找到看原因说因为每次路由改变之后,里面的this也变了所以没有找到报错,如果有大佬有见解请评论评论

原先代码

      $route: {
        handler: function (val, oldVal) {
          this.setData()
          if (this.userInfo.status == 2) {
            this.open(this.userInfo.status)
          } else if (this.userInfo.status == 3 || this.userInfo.status == 1) {
            this.$refs['changePawRef'].showEdit('')
          }
        },
        deep: true,
      },

处理后

    methods:{
      changeRoute(){
        this.setData()
          if (this.userInfo.status == 2) {
            this.open(this.userInfo.status)
          } else if (this.userInfo.status == 3 || this.userInfo.status == 1) {
            this.$refs['changePawRef'].showEdit('')
          }
      }
    },
    watch: {
      $route: 'changeRoute'
    },

2. error in render: "typeerror: cannot read properties of undefined (reading 'name')"

原因:在模板中使用了深度属性,多层,riskboj为空,后面的点出来的内容再没有赋值前是undefined

原代码

  <span> {{ riskObj.riskScore.name }}</span>
  
  data() {
      return {
         riskObj: {}
       }
  }

改动后

方法一:
  <span> {{ riskObj.riskScore.name }}</span>
  data() {
      return {
        riskObj: {
          riskScore: {
            name: '',
          },
        },
      }
  }
  
 方法二:
  <span v-if=“riskObj?.riskScore?.name”> {{ riskObj?.riskScore?.name }}</span>
  
  data() {
      return {
         riskObj: {}
       }
  }