Modules in Node.js

📘 Node.js 👁 51 views 📅 Nov 05, 2025
⏱ Estimated reading time: 3 min

1. What is a Module?

A module in Node.js is a self-contained block of code that encapsulates related functionality and exposes it for reuse.
Each file in Node.js is treated as a separate module.

✔ Improves code organization
✔ Enables reusability
✔ Prevents global scope pollution


2. Why Modules Are Needed

Without modules:

  • Code becomes hard to manage

  • Variables pollute global scope

  • Maintenance becomes difficult

With modules:

  • Clear separation of concerns

  • Better scalability

  • Easy testing and debugging


3. Types of Modules in Node.js

3.1 Core (Built-in) Modules

These are included with Node.js installation.

Examples:

  • fs – File system operations

  • http – Create web servers

  • path – File path handling

  • os – System information

  • events – Event handling

Usage:

const fs = require('fs');

3.2 Local Modules

Modules created by the user and stored in separate files.

Example:

// math.js function add(a, b) { return a + b; } function subtract(a, b) { return a - b; } module.exports = { add, subtract };
// app.js const math = require('./math'); console.log(math.add(5, 3));

3.3 Third-Party Modules

Modules created by the community and installed via npm.

Example:

npm install express
const express = require('express');

4. CommonJS Module System

Node.js uses the CommonJS module system by default.

Key Components

ComponentDescription
require()Imports a module
module.exportsExports functionality
exportsShortcut reference

4.1 Exporting Modules

Single Export

module.exports = function greet() { console.log("Hello!"); };

Multiple Exports

exports.add = (a, b) => a + b; exports.sub = (a, b) => a - b;

exports is a reference to module.exports


4.2 Importing Modules

const math = require('./math');

5. Module Wrapper Function (Internal Working)

Node.js wraps every module inside a function:

(function (exports, require, module, __filename, __dirname) { // Module code });

This provides:

  • Private scope

  • Access to module metadata


6. Module Resolution Process

When require() is used, Node.js follows this order:

  1. Core modules (fs, http)

  2. File or directory (./module)

  3. node_modules folder

  4. Looks for:

    • file.js

    • file.json

    • file.node

    • index.js


7. Module Caching

  • Modules are cached after first execution

  • Subsequent require() calls return the cached version

  • Code executes only once

✔ Improves performance
⚠ Shared state across imports


8. ES Modules (ESM)

Node.js also supports ES Modules.

Enable ES Modules

  • Use .mjs extension
    OR

  • Set "type": "module" in package.json


Exporting (ESM)

export const add = (a, b) => a + b; export default function greet() { console.log("Hi"); }

Importing (ESM)

import greet, { add } from './math.js';

9. CommonJS vs ES Modules

FeatureCommonJSES Modules
Importrequire()import
Exportmodule.exportsexport
LoadingSynchronousAsynchronous
UsageDefault in Node.jsModern standard

10. Best Practices

✔ Keep one module per file
✔ Export only what is required
✔ Use meaningful names
✔ Avoid circular dependencies
✔ Prefer ES Modules for new projects


11. Advantages of Modules

  • Encapsulation

  • Reusability

  • Maintainability

  • Scalability


12. Summary

  • Every Node.js file is a module

  • Supports Core, Local, and Third-Party modules

  • Uses CommonJS and ES Modules

  • Modules are cached for performance


🔒 Some advanced sections are available for Registered Members
Register Now

Share this Post


← Back to Tutorials

Popular Competitive Exam Quizzes