Node دونوں ماڈیول سسٹم کو سپورٹ کرتا ہے: CommonJS (CJS) — اصل، require/module.exports استعمال کرتے ہوئے — اور ES Modules (ESM) — معیاری، import/ استعمال کرتے ہوئے۔ یہ نحو، لوڈنگ رویے، اور interop میں مختلف ہیں۔
Node دونوں ماڈیول سسٹم کو سپورٹ کرتا ہے: CommonJS (CJS) — اصل، require/module.exports استعمال کرتے ہوئے — اور ES Modules (ESM) — معیاری، import/ استعمال کرتے ہوئے۔ یہ نحو، لوڈنگ رویے، اور interop میں مختلف ہیں۔
export// math.js
function add(a, b) { return a + b; }
module.exports = { add };
// app.js
const { add } = require("./math"); // synchronous, runtime
// math.mjs (or .js with "type": "module")
export function add(a, b) { return a + b; }
export default something;
// app.mjs
import { add } from "./math.mjs"; // static, hoisted
CommonJS ES Modules
Syntax require/module.exports import/export
Loading synchronous, runtime static, hoisted
Top-level await no yes
Tree-shaking hard yes (statically analyzable)
File extension .cjs / .js (default) .mjs / .js with "type":"module"
__dirname/__filename available not available (use import.meta.url)
// package.json
{ "type": "module" } // now .js files are treated as ESM
یا .mjs extension کو واضح طور پر استعمال کریں۔ اس کے بغیر، Node .js کو CommonJS پر ڈیفالٹ کرتا ہے۔
// ESM can import CommonJS:
import pkg from "some-cjs-lib"; // works (default import)
// CommonJS CANNOT require() a pure-ESM package (it's async):
const esm = require("esm-only-pkg"); // ❌ ERR_REQUIRE_ESM
// must use dynamic import: const esm = await import("esm-only-pkg");
خردہ کنارہ: CJS ESM-only پیکجز کو require() نہیں کر سکتا — ایک عام ہجرت کی تکلیف۔ یہ بھی نوٹ کریں کہ ESM میں __dirname غائب ہے (import.meta.url استعمال کریں)۔
حقیقی Node کام کے لیے دونوں سسٹم جاننا ضروری ہے: ESM مستقبل ہے (معیاری، tree-shakeable، top-level await، براؤزر کے ساتھ ہم آہنگ) اور نئے پروجیکٹس کے لیے صحیح انتخاب، لیکن npm ماحول اور موجودہ کوڈ کا ایک بہت بڑا حصہ CommonJS ہے۔
نحو کے فرق، ESM کو کیسے فعال کریں ("type": "module"), اور interop کی حدود (خاص طور پر CJS-can't-require-ESM) کو سمجھنا انہیں ملا دیتے وقت سامنے آنے والی کثرت سے غلطی اور الجھن سے بچاتا ہے۔