Perché convertire MJS in CJS?
Gli utenti convertono in .CJS per eseguire il codice in configurazioni Node.js più vecchie o con strumenti che si aspettano CommonJS, oppure per distribuire una build compatibile con require insieme a una ESM. La logica rimane la stessa; cambia solo il cablaggio dei moduli.
Come convertire MJS in CJS
esbuild EASIEST
Esegui esbuild input.mjs --format=cjs --platform=node --outfile=output.cjs per generare CommonJS. Aggiungi --bundle se vuoi anche le dipendenze incorporate.
Babel OPEN-SOURCE
Aggiungi @babel/plugin-transform-modules-commonjs alla tua configurazione, quindi esegui babel input.mjs -o output.cjs per riscrivere gli import in require.
Rollup FREE
Imposta output.format su cjs in rollup.config.js e avvia la build; Rollup genererà un bundle CommonJS dal tuo entry point ESM.
Informazioni su questi formati
Un file .mjs è codice sorgente JavaScript che Node.js tratta come un modulo ECMAScript, il che significa che utilizza import ed export invece del require di CommonJS. L'estensione esiste…
Apri dettagli .MJS →Un file .CJS è un file di dati utilizzato da software specifici.
Apri dettagli .CJS →Qualità e a cosa prestare attenzione
- L'
awaita livello superiore (top-level) non ha un equivalente in CommonJS e la conversione fallirà. - Gli export con nome diventano proprietà di
module.exportse l'interoperabilità con gli export predefiniti (default) può variare leggermente. - I percorsi relativi di
importeimport.meta.urlpotrebbero richiedere modifiche per l'output CommonJS.
Domande frequenti
Posso convertire manualmente?
import x from 'y' con const x = require('y') ed export con module.exports.Perché la mia build è fallita?
await a livello superiore, che CommonJS non può esprimere; spostalo all'interno di una funzione asincrona.Devo rinominare in .cjs?
package.json ha "type": "module"; l'estensione .cjs forza Node a trattarlo come CommonJS.