Varför konvertera MJS till CJS?
Man konverterar till .CJS för att köra kod i äldre Node.js-miljöer eller verktyg som förväntar sig CommonJS, eller för att leverera ett require-kompatibelt bygge vid sidan av ett ESM-bygge. Logiken förblir densamma; endast modulkopplingarna ändras.
Hur man konverterar MJS till CJS
esbuild EASIEST
Kör esbuild input.mjs --format=cjs --platform=node --outfile=output.cjs för att generera CommonJS. Lägg till --bundle om du även vill baka in beroenden.
Babel OPEN-SOURCE
Lägg till @babel/plugin-transform-modules-commonjs i din konfiguration, kör sedan babel input.mjs -o output.cjs för att skriva om importer till require.
Rollup FREE
Ställ in output.format till cjs i rollup.config.js och bygg; Rollup skapar ett CommonJS-paket från din ESM-startpunkt.
Om dessa format
En .mjs-fil är JavaScript-källkod som Node.js behandlar som en ECMAScript-modul, vilket innebär att den använder import och export istället för CommonJS require. Filändelsen finns för att…
Öppna detaljer för .MJS →En .CJS-fil är en datafil som används av specifik programvara.
Öppna detaljer för .CJS →Kvalitet & vad man bör tänka på
- Top-level
awaithar ingen motsvarighet i CommonJS och kommer att misslyckas vid konvertering. - Namngivna exporter blir egenskaper på
module.exports, och samverkan med default-exporter kan skilja sig något. - Relativa
import-sökvägar ochimport.meta.urlkan behöva justeras för CommonJS-utdatan.
Vanliga frågor
Kan jag konvertera manuellt?
import x from 'y' mot const x = require('y') och export mot module.exports.Varför misslyckades mitt bygge?
await, som CommonJS inte kan uttrycka; flytta in det i en asynkron funktion.Måste jag byta namn till .cjs?
package.json har „type“: „module“; filtillägget .cjs tvingar Node att behandla filen som CommonJS.