Waarom MJS naar CJS converteren?
Mensen converteren naar .CJS om code uit te voeren in oudere Node.js-omgevingen of tools die CommonJS verwachten, of om een require-compatibele build naast een ESM-versie te leveren. De logica blijft hetzelfde; alleen de module-koppeling verandert.
Hoe MJS naar CJS te converteren
esbuild EASIEST
Voer esbuild input.mjs --format=cjs --platform=node --outfile=output.cjs uit om CommonJS te genereren. Voeg --bundle toe als u ook afhankelijkheden wilt inlinen.
Babel OPEN-SOURCE
Voeg @babel/plugin-transform-modules-commonjs toe aan uw configuratie en voer vervolgens babel input.mjs -o output.cjs uit om imports te herschrijven naar require.
Rollup FREE
Stel output.format in op cjs in rollup.config.js en build; Rollup genereert een CommonJS-bundel vanuit uw ESM-entry.
Over deze formaten
Een .mjs-bestand is JavaScript-broncode die Node.js behandelt als een ECMAScript-module, wat betekent dat het import en export gebruikt in plaats van CommonJS require. De extensie bestaat…
Open .MJS details →Een .CJS-bestand is een gegevensbestand dat wordt gebruikt door specifieke software.
Open .CJS details →Kwaliteit & waar op te letten
- Top-level
awaitheeft geen CommonJS-equivalent en zal niet geconverteerd kunnen worden. - Named exports worden eigenschappen op
module.exports, en de interactie met default exports kan subtiel verschillen. - Relatieve
import-paden enimport.meta.urlmoeten mogelijk worden aangepast voor de CommonJS-output.
Veelgestelde vragen
Kan ik handmatig converteren?
import x from 'y' door const x = require('y') and export door module.exports.Waarom is mijn build mislukt?
await, wat CommonJS niet kan uitdrukken; verplaats dit naar binnen een async-functie.Moet ik hernoemen naar .cjs?
package.json "type": "module" heeft; de .cjs-extensie dwingt Node om het als CommonJS te behandelen.