Por que converter MJS para CJS?
As pessoas convertem para .CJS para executar código em configurações antigas do Node.js ou ferramentas que esperam CommonJS, ou para fornecer uma versão compatível com require junto com uma versão ESM. A lógica permanece a mesma; apenas a fiação do módulo muda.
Como converter MJS para CJS
esbuild EASIEST
Execute esbuild input.mjs --format=cjs --platform=node --outfile=output.cjs para emitir CommonJS. Adicione --bundle se também quiser as dependências incluídas.
Babel OPEN-SOURCE
Adicione @babel/plugin-transform-modules-commonjs à sua configuração e execute babel input.mjs -o output.cjs para reescrever as importações para require.
Rollup FREE
Defina output.format como cjs em rollup.config.js e compile; o Rollup emite um pacote CommonJS a partir da sua entrada ESM.
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 .CJS é um arquivo de dados usado por um software específico.
Abrir detalhes de .CJS →Qualidade e o que observar
- O
awaitde nível superior não tem equivalente em CommonJS e falhará na conversão. - Exportações nomeadas tornam-se propriedades em
module.exports, e a interoperabilidade com exportações padrão pode diferir sutilmente. - Caminhos de
importrelativos eimport.meta.urlpodem precisar de ajustes para a saída CommonJS.
Perguntas frequentes
Posso converter manualmente?
import x from 'y' por const x = require('y') e export por module.exports.Por que minha compilação falhou?
await de nível superior, que o CommonJS não pode expressar; mova-o para dentro de uma função assíncrona.Preciso renomear para .cjs?
package.json tiver "type": "module"; a extensão .cjs força o Node a tratá-lo como CommonJS.