You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何解决async导出用户变量后跨模块引入时取值为undefined的问题

问题根因

你出现这个问题的核心错误有两个:

  • 调用b(setU)时传参是setU函数本身,没有执行该函数,你在b函数内await的是函数对象,不是setU执行后返回的Promise,自然拿不到用户对象
  • setU定义时需要接收Promise类型的参数u才能返回用户信息,你之前完全没有传入对应参数,就算直接执行setU()也会得到空结果

修复方案

首先确认你login()函数是异步返回谷歌用户信息的方法,调整模块2代码如下即可:

import {login,cerrar,setU} from '/js/log_principal.js'

async function init() {
  // 先等待登录完成拿到用户信息
  const loginResult = await login();
  // 把登录返回的用户Promise/对象传给setU执行
  const user = await setU(loginResult);
  // 此时可以正常拿到uid
  console.log(user.uid);
}

init();

如果你要保留原来的b函数写法,调整如下:

import {login,cerrar,setU} from '/js/log_principal.js'

// 执行login拿到用户Promise,传给setU执行后得到用户信息的Promise,再传入b函数
const userPromise = setU(login());
b(userPromise);   

async function b(usuarioPromise){    
    let user= await usuarioPromise;        
    console.log(user.uid);
}

内容的提问来源于stack exchange,提问作者miguel angel Asencio

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.29 07:27:03