解决方案:

提示:这个问题其实搞了很久,在安卓和ios真机上看不出来,但是放到浏览器上就报一个can't ....property.... userInfo的问题

其实就是在读取数据库上后返回的数据里面的userInfo[key],key=nickname的时候没有获取到这个属性的问题项目目录下的/uni_modules/uni-im/sdk/methods/users.js。

merge(usersInfo) {
    if (Array.isArray(usersInfo)) {
      let obj = {}
      usersInfo.forEach(item => {
        obj[item._id] = item
      })
      usersInfo = obj
    }
		for(let key in usersInfo){
			if(!usersInfo[key]) continue;
			const {nickname} = usersInfo[key]
			if (nickname && !nickname.includes('(')){
				usersInfo[key] = new Proxy(usersInfo[key], {
					get(target, prop) {
						if(prop === 'nickname'){
							const alias = $state.userAlias[target._id]
							if(alias){
								return target[prop] + ' (' + alias + ')'
							}
						}
						return target[prop]
					}
				})
			} else {
				console.log('已经代理过了',usersInfo[key].nickname)
			}
		}
    Object.assign($state.users, usersInfo)
  },

在循环中加一个:if(!usersInfo[key]) continue;

更多推荐