Node.js: exports与module.exports的区别

本文探讨了Nodejs中exports与module.exports的区别及正确用法。通过解决一个具体案例,阐述了如何避免两者同时使用导致的方法找不到的问题。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

初学Nodejs,在运行一个小项目时出现问题,报错如下:

这里写图片描述

原文件如下:

主入口文件:index.js
这里写图片描述

出错文件:klass.js
这里写图片描述

刚开始也找不出问题出在哪里,经过多方查阅资料和不断的尝试,最终找到问题源在以下两句上:

exports.add=add;

module.exports=add;

因为同时使用了这两句,使得add方法找不到,具体原因在于exports与module.exports的区别:

Module.exports才是真正的接口,exports只不过是它的一个辅助工具。 最终返回给调用的是Module.exports而不是exports。
exports挂载属性和方法再赋给module.exports

如果你的模块是一个特定的类型就用Module.exports。如果你的模块是一个典型的“实例化对象”就用exports

对于题主遇到的情况,只需要将add方法挂载在exports上,去掉第二句就可以解决了。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值