Warum MJS in CJS konvertieren?
Nutzer konvertieren zu .CJS, um Code in älteren Node.js-Umgebungen oder Tools auszuführen, die CommonJS erwarten, oder um einen require-kompatiblen Build neben einem ESM-Build bereitzustellen. Die Logik bleibt gleich; nur die Modul-Verdrahtung ändert sich.
Wie man MJS in CJS konvertiert
esbuild EASIEST
Führen Sie esbuild input.mjs --format=cjs --platform=node --outfile=output.cjs aus, um CommonJS auszugeben. Fügen Sie --bundle hinzu, wenn Sie auch Abhängigkeiten inline einfügen möchten.
Babel OPEN-SOURCE
Fügen Sie @babel/plugin-transform-modules-commonjs zu Ihrer Konfiguration hinzu und führen Sie dann babel input.mjs -o output.cjs aus, um Imports in require umzuschreiben.
Rollup FREE
Setzen Sie output.format in der rollup.config.js auf cjs und führen Sie den Build aus; Rollup erstellt ein CommonJS-Bundle aus Ihrem ESM-Einstiegspunkt.
Über diese Formate
Eine .mjs-Datei ist JavaScript-Quellcode, den Node.js als ECMAScript-Modul behandelt. Das bedeutet, dass sie import und export anstelle von CommonJS require verwendet. Die Dateiendung…
.MJS-Details öffnen →Eine .CJS-Datei ist eine Datendatei, die von bestimmter Software verwendet wird.
.CJS-Details öffnen →Qualität & worauf zu achten ist
- Für Top-Level
awaitgibt es keine CommonJS-Entsprechung, was die Konvertierung fehlschlagen lässt. - Benannte Exports werden zu Eigenschaften von
module.exports, und die Interoperabilität mit Default-Exports kann sich geringfügig unterscheiden. - Relative
import-Pfade undimport.meta.urlmüssen für die CommonJS-Ausgabe möglicherweise angepasst werden.
Häufig gestellte Fragen
Kann ich manuell konvertieren?
import x from 'y' gegen const x = require('y') und export gegen module.exports aus.Warum ist mein Build fehlgeschlagen?
await, das CommonJS nicht ausdrücken kann; verschieben Sie es in eine asynchrone Funktion.Muss ich die Datei in .cjs umbenennen?
package.json "type": "module" enthält; die Endung .cjs zwingt Node dazu, die Datei als CommonJS zu behandeln.