全部学科
Python全栈
python
NodeJS全栈
nodejs
小程序首页
📅 2026-05-15 6 分钟 ✍️ juanwangdev

Node.js module 模块对象

module 是 Node.js 每个模块的局部对象,包含模块的元信息和导出配置。

基本概念

JavaScript
// 每个模块都有 module 对象
console.log(module);

// 输出示例:
// Module {
//   id: '.',
//   path: '/home/user/project',
//   exports: {},
//   filename: '/home/user/project/app.js',
//   loaded: false,
//   children: [],
//   parent: null,
//   paths: [...]
// }

module 常用属性

module.exports

JavaScript
// 导出单个值
module.exports = function add(a, b) {
  return a + b;
};

// 导出对象
module.exports = {
  name: 'utils',
  version: '1.0.0',
  add: (a, b) => a + b
};

module.id

JavaScript
// 入口模块的 id 为 '.'
console.log(module.id); // '.'

// 被引入模块的 id 为完整路径
// const utils = require('./utils');
// utils 模块中: module.id = '/home/user/project/utils.js'

module.filename

JavaScript
// 模块的完整路径(同 __filename)
console.log(module.filename); // /home/user/project/app.js

module.loaded

JavaScript
// 模块是否已完成加载
console.log(module.loaded); // false(加载中)
// 加载完成后变为 true

module.children

JavaScript
// 当前模块引入的所有子模块
const fs = require('fs');
const path = require('path');

console.log(module.children);
// [ Module { id: 'fs', ... }, Module { id: 'path', ... } ]

module.parent

JavaScript
// 首次引用该模块的模块(已弃用)
console.log(module.parent); // Module 对象或 null

module.exports 与 exports 的区别

JavaScript
// exports 是 module.exports 的引用
console.log(exports === module.exports); // true

// ✅ 正确:添加属性
exports.name = 'Tom';
exports.age = 25;

// ❌ 错误:重新赋值会断开引用
exports = { name: 'Tom' }; // module.exports 不受影响

// ✅ 正确:导出整个对象
module.exports = { name: 'Tom', age: 25 };

module.exports 才是真正的导出对象,exports 只是它的引用简写。

要点总结

  • module 是每个模块的局部对象,包含模块元信息
  • module.exports 是真正的导出对象
  • exports 是 module.exports 的引用,只能添加属性
  • module.id、module.filename、module.loaded 提供模块状态信息

📝 发现内容有误?点击此处直接编辑

← 上一篇 Node.js global 全局对象
下一篇 → Node.js process 进程对象
想查看更多题目和详细解析?
小程序提供完整的题库、模拟考试和详细解析
马上就来

长按或扫描二维码,立即体验

扫码体验小程序
马上就来
使用微信扫描二维码
立即体验完整题库