Por que converter MJS para JS?
As pessoas convertem .mjs para .js simples para descartar a extensão explícita de ES-module e deixar o package.json do projeto decidir o sistema de módulos, ou para fornecer uma saída CommonJS que versões mais antigas do Node e ferramentas possam carregar sem ESM.
Como converter MJS para JS
Renomear e definir o tipo no package.json EASIEST
Renomeie o arquivo para .js e adicione "type": "module" ao package.json para que o Node continue tratando-o como um ES module.
Babel OPEN-SOURCE
Instale o @babel/plugin-transform-modules-commonjs (ou @babel/preset-env) e execute babel file.mjs --out-file file.js para reescrever import/export em require/module.exports do CommonJS.
esbuild OPEN-SOURCE
Execute esbuild file.mjs --format=cjs --platform=node --outfile=file.js para gerar um pacote .js em CommonJS a partir do ES module.
Visual Studio Code FREE
Abra o .mjs no VS Code, renomeie-o para .js e use o editor para converter as instruções import/export manualmente para arquivos pequenos.
Sobre estes formatos
Um arquivo .mjs é um código-fonte JavaScript que o Node.js trata como um módulo ECMAScript, o que significa que ele usa import e export em vez do require do CommonJS. A extensão existe para…
Abrir detalhes de .MJS →Um arquivo JS é um arquivo de código-fonte JavaScript - texto simples e legível que alimenta a interatividade de páginas web e aplicativos do lado do servidor via Node.js. Abra-o em…
Abrir detalhes de .JS →Qualidade e o que observar
- Renomear sozinho não altera o código; se o
package.jsonnão estiver definido como"type": "module", a sintaxe ESM em um arquivo.jslançará umSyntaxError. - A transpilação para CommonJS altera
import/exportpararequire/module.exportse pode alterar o comportamento deawaitno nível superior e deimport.meta. - Um empacotador como o esbuild pode incluir dependências internamente e remover comentários, portanto, o
.jsde saída não é uma cópia linha por linha do código-fonte.
Perguntas frequentes
`.mjs` é o mesmo que `.js`?
.mjs sempre significa um ES module, enquanto .js segue o que o package.json define - CommonJS por padrão, ou ESM se "type": "module" estiver presente.Posso apenas renomear `.mjs` para `.js`?
package.json tiver "type": "module". Caso contrário, o Node tratará o .js como CommonJS e a sintaxe ESM dará erro.Como mantenho o ESM após renomear?
"type": "module" ao seu package.json ou use a extensão .mjs. Ambos dizem ao Node para analisar o arquivo como um ES module.