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

如何在变量有值时导出?token导出后始终为undefined的问题

问题分析

你当前的写法存在两个核心问题:

  1. Node.js 的 require 是同步加载机制,第一次引入 auth 文件时,token 为 undefined,导致 if 条件不成立,module.exports.token 根本不会被定义,后续打印自然是 undefined。
  2. 即便后续给原 token 变量赋值,也不会同步到 module.exports——因为你没有重新更新导出的属性,两者没有引用关联。
解决方案

方案一:导出可修改的对象(引用同步)

修改 auth 文件,先导出一个包含 token 属性的对象,认证成功后直接更新该对象的属性:

// auth.js
// 初始导出带token属性的对象,默认值为undefined
module.exports = { token: undefined };

// 示例:认证成功后调用此方法更新token
function onAuthSuccess(newToken) {
  module.exports.token = newToken;
}

接收文件中,直接引用导出的对象,后续token更新后会自动同步:

// 接收文件
const auth = require('../../../../dashboard/module/auth');
// 注意:需在认证完成后再打印或使用,否则仍为undefined
console.log(auth.token);

方案二:导出获取token的函数(更安全灵活)

通过函数获取最新的token值,避免直接暴露可修改的变量:

// auth.js
let token = undefined;

// 设置token的方法
module.exports.setToken = (newToken) => {
  token = newToken;
};

// 获取最新token的方法
module.exports.getToken = () => token;

接收文件中,调用getToken方法获取最新值:

// 接收文件
const auth = require('../../../../dashboard/module/auth');
// 认证完成后调用
console.log(auth.getToken());

内容的提问来源于stack exchange,提问作者Natamongkol

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.26 20:10:09