正确赋值 module.exports 的核心原则是它决定模块最终导出内容,且只能赋值一次或统一风格赋值,不可与 exports 混用;推荐直接赋值对象、函数或原始值,语义明确、不易出错。

正确赋值 module.exports 的核心原则是:它决定模块最终导出的内容,且只能赋值一次(或统一风格赋值),不能与 exports 混用导致覆盖丢失。
直接赋值一个对象、函数或值
这是最清晰、最推荐的方式。把整个导出结构一次性赋给 module.exports,语义明确,不易出错。
- 导出多个具名函数和常量:
math.js
module.exports = {
add: (a, b) => a + b,
subtract: (a, b) => a - b,
PI: 3.14159
};使用时可解构或点访问:
立即学习“Java免费学习笔记(深入)”;
const { add, PI } = require('./math');
console.log(add(2, 3)); // 5导出单个函数或类
适合工具函数、构造器或默认入口场景,调用方无需解构,直接使用。
- 导出一个构造函数:
User.js
class User {
constructor(name) {
this.name = name;
}
}
module.exports = User;使用方式:
const User = require('./User');
const u = new User('Alice');导出一个原始值或字符串
适用于配置、常量、版本号等简单内容。
- 导出版本信息:
version.js
module.exports = '2.4.0';
使用方式:
const version = require('./version');
console.log(version); // '2.4.0'避免混用 exports 和 module.exports
一旦给 module.exports 赋了新值,再操作 exports 就无效;反之,如果先挂载了 exports.xxx,又重新赋值 module.exports,前面挂的属性会被丢弃。
- ❌ 错误示例(前两行失效):
exports.add = () => {}; // 这行被后续覆盖,不生效
module.exports = { subtract: () => {} }; // 最终只导出 { subtract }- ✅ 正确做法:统一风格,要么全用
exports.xxx =,要么只用module.exports =。


















