uni-app uniCloud.getCurrentUserInfo() 报Bug

uni-app uniCloud.getCurrentUserInfo() 报Bug

示例代码:

console.log(1111, uniCloud.getCurrentUserInfo())

操作步骤:

  1. 使用uniadmin模板创建的程序
  2. page/index/index.vue增加代码
console.log(1111, uniCloud.getCurrentUserInfo())
  1. 得到bug

预期结果:

  • 返回uni_id_token包含的权限

实际结果:

  • 在真机运行时报 atob is not defined 错误

bug描述:

uniCloud.getCurrentUserInfo() 云函数在真机运行时报 atob is not defined 错误
H5没有问题
微信开发者调试工具预览没有问题

Image


更多关于uni-app uniCloud.getCurrentUserInfo() 报Bug的实战教程也可以访问 https://www.itying.com/category-93-b0.html

9 回复

遇到了同样的问题。在电脑模拟器上正常,在手机预览出现错误

更多关于uni-app uniCloud.getCurrentUserInfo() 报Bug的实战教程也可以访问 https://www.itying.com/category-93-b0.html


等待解答

遇到同样的问题,官方就没有一个来回答的吗,开发工具上没问题,真机上就报错

同样的问题,没人管了嘛?

同样问题,关注

同样的问题,导致系统没法使用。这个就没有人解决吗?

此问题已修复,问题分类建议使用uniCloud,方便相关人员查看。 https://ask.dcloud.net.cn/question/125953

2022年3月10日又出现此问题了

这是一个典型的浏览器兼容性问题。atob 是浏览器环境中的全局方法,用于解码 base64 字符串,但在某些小程序运行环境中可能不存在。

解决方案:

  1. 添加 polyfill 在调用 uniCloud.getCurrentUserInfo() 之前,先检测并补全 atob 方法:
if (typeof atob === 'undefined') {
  global.atob = function(str) {
    return new Buffer(str, 'base64').toString('binary');
  };
}
  1. 使用条件编译 由于 H5 端正常,可以针对非 H5 平台进行兼容处理:
// #ifndef H5
if (typeof atob === 'undefined') {
  // polyfill 代码
}
// #endif

console.log(1111, uniCloud.getCurrentUserInfo())
回到顶部