1***@qq.com
1***@qq.com
  • 发布:2023-07-21 09:28
  • 更新:2023-07-21 09:28
  • 阅读:200

【报Bug】uni 执行 build操作之后的 vendor.js文件有Bug

分类:uni-app

产品分类: uniapp/小程序/微信

PC开发环境操作系统: Mac

PC开发环境操作系统版本号: 10.14.6

第三方开发者工具版本号: 1.06.2306281

基础库版本号: 2.32.1

项目创建方式: CLI

CLI版本号: 2.0.0-31920210514002

示例代码:

data: [{ name: 'No1', children: [{name: '1'}]}, { name: 'No2'}]

template: <view v-for="(item, index) in data" :key="index"> <view>{{ item.name }}</view> <view> <view v-for="(_item, _index) in (item.children || [])" key="_index" @click="handlerSelected(item, _item)"
>{{ _item.name }}</view>
</view>
</view>

methods: handlerSelected(i, c) { console.log(i, c)}

微信开发工具报错:TypeError: Cannot read property '0' of undefined

经排查发现build出来的vender.js文件中 18593行 存在BUG
function getTarget(obj, path) {
var parts = path.split('.');
var key = parts[0];
* 这里的parts输出了 ["children || []"] 引发的报错
template中加入的||[]是为了规避风险 但是这里阻塞住了
console.log(parts, 'parts')
if (key.indexOf('$n') === 0) { //number index
key = parseInt(key.replace('
$n', ''));
}
if (parts.length === 1) {
return obj[key]
}
return getTarget(obj[key], parts.slice(1).join('.'))
}

操作步骤:

按照以上代码场景就好

预期结果:

预期点击事件可以打印出具体row

实际结果:

TypeError: Cannot read property '0' of undefined ?

bug描述:

data: [{ name: 'No1', children: [{name: '1'}]}, { name: 'No2'}]  

template:   
<view v-for="(item, index) in data" :key="index">  
  <view>{{ item.name }}</view>  
  <view>  
    <view   
      v-for="(_item, _index) in (item.children || [])"   
      :key="_index"  
      @click="handlerSelected(item, _item)"   
    >{{ _item.name }}</view>  
  </view>  
</view>  

methods: handlerSelected(i, c) { console.log(i, c)}  

微信开发工具报错:TypeError: Cannot read property '0' of undefined   

经排查发现build出来的vender.js文件中 18593行 存在BUG  
function getTarget(obj, path) {  
  var parts = path.split('.');  
  var key = parts[0];  
  *****    这里的parts输出了 ["children || []"]  **** 引发的报错  
  template中加入的||[]是为了规避风险 但是这里阻塞住了   
  console.log(parts, 'parts')  
  if (key.indexOf('__$n') === 0) { //number index  
    key = parseInt(key.replace('__$n', ''));  
  }  
  if (parts.length === 1) {  
    return obj[key]  
  }  
  return getTarget(obj[key], parts.slice(1).join('.'))  
}  
2023-07-21 09:28 负责人:DCloud_UNI_GSQ 分享
已邀请:

要回复问题请先登录注册