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

Node.js新手求助:引入自定义模块后console.log显示空对象

问题解决:Node.js模块导出导致控制台输出空对象

嘿,我来帮你排查下这个问题~ 你遇到的空对象输出问题,主要是模块导出的方式用错了,还有重复赋值的小坑,具体来说有这两个关键点:


1. 错误的导出属性:用module.exports而非module.expose

Node.js的模块系统里,用来指定模块导出内容的是module.exports属性,而不是你写的module.expose——这个expose是不存在的自定义属性,Node.js根本不会识别它,所以默认会导出空对象{}。

2. 重复赋值会覆盖导出内容

就算你用对了导出属性,连续两次直接赋值(比如module.exports = sum; module.exports = div;)也会把第一次的sum覆盖,最后只会导出div。如果要导出多个函数,你需要把它们放在一个对象里,或者逐个添加到exports对象上。


修正后的代码示例

方式1:导出包含多个函数的对象(推荐)

修改tutorial.js:

const sum = (num1, num2) => num1 + num2; 
const div = (num1, num2) => num1 / num2; 

// 把两个函数打包成一个对象导出
module.exports = {
  sum,
  div
};

方式2:逐个添加到exports对象

tutorial.js也可以这么写:

const sum = (num1, num2) => num1 + num2; 
const div = (num1, num2) => num1 / num2; 

exports.sum = sum;
exports.div = div;

验证修正后的输出

修改后运行node app.js,console.log(tutorial)会输出:

{ sum: [Function: sum], div: [Function: div] }

你也可以直接调用这些函数:

const tutorial = require('./tutorial'); 
console.log(tutorial.sum(2, 3)); // 输出 5
console.log(tutorial.div(6, 2)); // 输出 3

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.14 06:31:09