Wix Velo调用currentMember.getMember()首次加载返回undefined问题
问题原因
- Wix 页面默认开启的预加载机制会在服务端提前生成静态页面内容,预渲染阶段不存在用户登录会话上下文,此时调用
getMember()会直接返回undefined。首次进入页面时加载的是预渲染好的静态内容,等你手动刷新页面时,浏览器请求会带上本地存储的登录态凭证,才能正常获取到成员数据。 $w.onReady仅会在页面DOM结构加载完成后触发,不会等待Wix成员身份认证模块异步初始化完成,首次进入页面调用接口时,登录态校验还未完成,自然无法获取到有效成员对象。
解决方案
方案1:优化代码逻辑,监听登录态再调用接口
改用异步逻辑先校验登录状态,未登录时监听登录完成事件再获取成员信息,示例代码如下:
import { currentMember, authentication } from 'wix-members'; $w.onReady(async function () { const handleGetMember = async () => { // 传入fields参数明确指定需要返回邮箱字段,减少权限问题概率 const member = await currentMember.getMember({ fields: ['email'] }); console.log(member); // 此处补充调用邮箱查询数据库的业务逻辑 }; if (authentication.loggedIn()) { await handleGetMember(); } else { authentication.onLogin(handleGetMember); } });
方案2:关闭目标页面预加载开关
直接在Wix编辑器内关闭个人资料页的预加载配置即可解决:
- 打开站点编辑器,左侧菜单栏找到「页面」选项
- 找到你的自定义个人资料页,点击右侧三个点选择「设置」
- 切换到「高级」标签页,关闭「预加载页面」选项
- 保存并重新发布站点即可生效
内容的提问来源于stack exchange,提问作者SMO_Team
相关产品推荐
相关产品推荐

