module.exports 是 commonjs 模块唯一导出出口;导出函数或对象时应直接赋值给 module.exports,避免误用 exports = ... 或混用 exports 与重写 module.exports。

在 CommonJS 规范中,module.exports 是模块对外暴露内容的唯一出口。导出单个函数或对象时,直接将其赋值给 module.exports 即可,而不是挂载到 exports 上(避免误用 exports = xxx,这会断开与 module.exports 的引用关系)。
导出一个函数
适合封装可复用的操作逻辑,比如工具函数:
// math.js
module.exports = function add(a, b) {
return a + b;
};
使用时直接 require 得到该函数:
// app.js
const add = require('./math');
console.log(add(2, 3)); // 5
导出一个对象
适合导出配置、常量集合或带多个属性/方法的简单实例:
在 Java 中初始化和管理阿里云 SDK客户端。包括单例模式、线程安全、endpoint 与 region 配置、VPC 终端节点、同步与异步等。
// config.js
module.exports = {
apiUrl: 'https://api.example.com',
timeout: 5000,
isProduction: false
};
导入后解构或直接访问属性:
// app.js
const config = require('./config');
console.log(config.apiUrl); // https://api.example.com
常见错误提醒
以下写法会导致模块导出为 {} 或 undefined:
-
exports = function() {...}—— 赋值给exports不影响module.exports -
exports.myFunc = function() {...}; module.exports = {};—— 后续重写module.exports会覆盖之前挂载的内容 -
module.exports.default = ...—— 这是 ES Module 风格,CommonJS 不需要.default
和 exports 的区别
exports 是 module.exports 的快捷引用,仅在不重新赋值的前提下可用:
- ✅ 正确:
exports.foo = function() {}(等价于module.exports.foo = ...) - ❌ 错误:
exports = function() {}(切断引用,外部得不到该函数) - ✅ 安全统一写法:
module.exports = ...(无论导出什么类型都可靠)
Java免费学习笔记:立即使用
解锁 Java 大师之旅:从入门到精通的终极指南










