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

Node.js中对象解构获取模块导出值为undefined的原因咨询

为什么第一种导入方式会返回undefined?

这问题出在你对解构赋值的逻辑理解偏差上,咱们一步步拆解清楚:

首先,先明确你的模块导出结构:假设core模块的主文件(比如index.js)里是这样导出globals的:

// core/index.js
const globals = { /* 你的目标对象内容 */ };
module.exports = { globals };

这时候require('core')会返回一个对象:{ globals: 你的目标对象 }。

两种导入方式的区别

  1. 正确的写法:const globals = require('core').globals;
    这个操作是直接从require('core')返回的对象中,取出名为globals的属性值(也就是你的目标对象),并赋值给变量globals,所以能得到正确结果。

  2. 出问题的写法:const {globals} = require('core').globals;
    这个操作分两步:

    • 第一步:require('core').globals已经拿到了你的目标对象;
    • 第二步:用解构赋值{globals} = 目标对象,试图从目标对象本身里取出名为globals的属性。

    如果你的目标对象里并没有globals这个属性,那解构出来的自然就是undefined了——这就是问题的核心!

举个具体例子

假设你的globals对象是:

const globals = { appName: "MyApp", version: "1.0" };

那require('core').globals就是这个{ appName: "MyApp", version: "1.0" }对象。这时候用const {globals} = 这个对象,相当于找globals.globals,显然不存在,所以返回undefined。

如果你非要用解构写法

如果想通过解构直接拿到目标对象,应该改成从require('core')返回的对象里解构:

const { globals } = require('core');

这样就和const globals = require('core').globals;效果完全一致了。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.26 09:27:58