Perché convertire MJS in JS?
Gli utenti convertono .mjs in semplice .js per eliminare l'estensione esplicita del modulo ES e lasciare che sia il package.json del progetto a decidere il sistema di moduli, oppure per distribuire un output CommonJS che le versioni più vecchie di Node e altri strumenti possono caricare senza ESM.
Come convertire MJS in JS
Rinomina e imposta il tipo in package.json EASIEST
Rinomina il file in .js e aggiungi "type": "module" al package.json in modo che Node continui a trattarlo come un modulo ES.
Babel OPEN-SOURCE
Installa @babel/plugin-transform-modules-commonjs (o @babel/preset-env) ed esegui babel file.mjs --out-file file.js per riscrivere import/export in CommonJS require/module.exports.
esbuild OPEN-SOURCE
Esegui esbuild file.mjs --format=cjs --platform=node --outfile=file.js per generare un bundle .js in formato CommonJS dal modulo ES.
Visual Studio Code FREE
Apri il file .mjs in VS Code, rinominalo in .js e usa l'editor per convertire manualmente le istruzioni import/export per i file di piccole dimensioni.
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 JS è un file di codice sorgente JavaScript - testo semplice e leggibile che alimenta l'interattività delle pagine web e le app lato server tramite Node.js. È possibile aprirlo in…
Apri dettagli .JS →Qualità e a cosa prestare attenzione
- La sola ridenominazione non cambia il codice; se
package.jsonnon è impostato su"type": "module", la sintassi ESM in un file.jsgenererà unSyntaxError. - La transpilazione in CommonJS trasforma
import/exportinrequire/module.exportse può alterare il comportamento diawaita livello superiore (top-level) e diimport.meta. - Un bundler come esbuild potrebbe incorporare le dipendenze in linea e rimuovere i commenti, quindi il file
.jsrisultante non sarà una copia riga per riga del sorgente.
Domande frequenti
Il formato `.mjs` è uguale a `.js`?
.mjs indica sempre un modulo ES, mentre .js segue le impostazioni del package.json - CommonJS per impostazione predefinita, o ESM se è presente "type": "module".Posso semplicemente rinominare `.mjs` in `.js`?
package.json ha "type": "module". Altrimenti Node tratterà il file .js come CommonJS e la sintassi ESM darà errore.Come mantengo ESM dopo la ridenominazione?
"type": "module" al tuo package.json, oppure usa l'estensione .mjs. Entrambi dicono a Node di analizzare il file come un modulo ES.