¿Por qué convertir MJS a JS?
Los usuarios convierten .mjs a .js simple para eliminar la extensión explícita de módulo ES y dejar que el package.json del proyecto decida el sistema de módulos, o para distribuir una salida CommonJS que las versiones antiguas de Node y otras herramientas puedan cargar sin ESM.
Cómo convertir MJS a JS
Renombrar y configurar el tipo en package.json EASIEST
Renombre el archivo a .js y añada "type": "module" al package.json para que Node siga tratándolo como un módulo ES.
Babel OPEN-SOURCE
Instale @babel/plugin-transform-modules-commonjs (o @babel/preset-env) y ejecute babel file.mjs --out-file file.js para reescribir import/export en require/module.exports de CommonJS.
esbuild OPEN-SOURCE
Ejecute esbuild file.mjs --format=cjs --platform=node --outfile=file.js para generar un paquete .js en formato CommonJS desde el módulo ES.
Visual Studio Code FREE
Abra el .mjs en VS Code, cámbiele el nombre a .js y use el editor para convertir las sentencias import/export a mano para archivos pequeños.
Acerca de estos formatos
Un archivo .mjs es código fuente de JavaScript que Node.js trata como un módulo ECMAScript, lo que significa que utiliza import y export en lugar del require de CommonJS. La extensión…
Abrir detalles de .MJS →Un archivo JS es un archivo de código fuente JavaScript: texto plano y legible que potencia la interactividad de las páginas web y las aplicaciones de servidor mediante Node.js. Ábralo en…
Abrir detalles de .JS →Calidad y qué observar
- Renombrar por sí solo no cambia el código; si
package.jsonno está configurado como"type": "module", la sintaxis ESM en un archivo.jslanzará unSyntaxError. - Transpilar a CommonJS cambia
import/exportporrequire/module.exportsy puede alterar el comportamiento deawaiten el nivel superior eimport.meta. - Un empaquetador como esbuild puede incluir dependencias y eliminar comentarios, por lo que el
.jsresultante no es una copia línea por línea del código fuente.
Preguntas frecuentes
¿Es `.mjs` lo mismo que `.js`?
.mjs siempre significa un módulo ES, mientras que .js sigue lo que establezca el package.json - CommonJS por defecto, o ESM si "type": "module" está presente.¿Puedo simplemente renombrar `.mjs` a `.js`?
package.json tiene "type": "module". De lo contrario, Node tratará el .js como CommonJS y la sintaxis ESM dará error.¿Cómo mantengo ESM después de renombrar?
"type": "module" a su package.json, o use la extensión .mjs. Ambas indican a Node que analice el archivo como un módulo ES.