解决方案:
提示:这个问题其实搞了很久,在安卓和ios真机上看不出来,但是放到浏览器上就报一个can't ....property.... userInfo的问题
其实就是在读取数据库上后返回的数据里面的userInfo[key],key=nickname的时候没有获取到这个属性的问题项目目录下的/uni_modules/uni-im/sdk/methods/users.js。
javascript
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;