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
相关产品推荐
相关产品推荐

