如何在变量有值时导出?token导出后始终为undefined的问题
问题分析
你当前的写法存在两个核心问题:
- Node.js 的
require是同步加载机制,第一次引入 auth 文件时,token为undefined,导致if条件不成立,module.exports.token根本不会被定义,后续打印自然是undefined。 - 即便后续给原
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
相关产品推荐
相关产品推荐

