Hvorfor konvertere MJS til CJS?
Folk konverterer til .CJS for at køre kode i ældre Node.js-opsætninger eller værktøjer, der forventer CommonJS, eller for at levere et require-kompatibelt build sammen med et ESM-build. Logikken forbliver den samme; kun modul-forbindelserne ændres.
Sådan konverterer du MJS til CJS
esbuild EASIEST
Kør esbuild input.mjs --format=cjs --platform=node --outfile=output.cjs for at generere CommonJS. Tilføj --bundle, hvis du også vil have afhængigheder indlejret.
Babel OPEN-SOURCE
Tilføj @babel/plugin-transform-modules-commonjs til din konfiguration, og kør derefter babel input.mjs -o output.cjs for at omskrive imports til require.
Rollup FREE
Indstil output.format til cjs i rollup.config.js og byg; Rollup genererer en CommonJS-pakke fra din ESM-indgangsfil.
Om disse formater
En .mjs-fil er JavaScript-kildekode, som Node.js behandler som et ECMAScript-modul, hvilket betyder, at den bruger import og export i stedet for CommonJS require. Filtypen eksisterer, så…
Åbn .MJS detaljer →En .CJS-fil er en datafil, der bruges af specifik software.
Åbn .CJS detaljer →Kvalitet & hvad man skal være opmærksom på
- Top-level
awaithar ingen CommonJS-ækvivalent og vil fejle ved konvertering. - Navngivne exports bliver til egenskaber på
module.exports, og samspillet med default exports kan variere en smule. - Relative
import-stier ogimport.meta.urlskal muligvis justeres til CommonJS-outputtet.
Ofte stillede spørgsmål
Kan jeg konvertere manuelt?
import x from 'y' med const x = require('y') og export med module.exports.Hvorfor fejlede mit build?
await, som CommonJS ikke kan udtrykke; flyt det ind i en asynkron funktion.Skal jeg omdøbe til .cjs?
package.json har "type": "module"; filtypenavnet .cjs tvinger Node til at behandle den som CommonJS.