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 एक्सटेन्सन स्पष्ट रूपमा प्रयोग गर्नुहोस्। यो बिना, 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, browser-पङ्क्तिबद्ध) र नयाँ परियोजनाहरूको लागि सही विकल्प हो, तर npm इकोसिस्टम र अवस्थित कोडको विशाल भाग CommonJS हो।
सिंटैक्स फरकहरू, ESM कसरी सक्षम गर्ने ("type": "module"), र interop सीमाहरू (विशेषगरी CJS-न-require-ESM) बुझले तिनीहरूलाई मिश्रण गर्दा उत्पन्न हुने बारम्बार भ्रम र त्रुटिहरू रोक्छ।