Pourquoi convertir MJS en CJS ?
Les utilisateurs convertissent en .CJS pour exécuter du code dans d'anciennes configurations Node.js ou des outils qui attendent du CommonJS, ou pour fournir une version compatible avec require aux côtés d'une version ESM. La logique reste la même ; seul le câblage des modules change.
Comment convertir MJS en CJS
esbuild EASIEST
Lancez esbuild input.mjs --format=cjs --platform=node --outfile=output.cjs pour générer du CommonJS. Ajoutez --bundle si vous souhaitez également intégrer les dépendances.
Babel OPEN-SOURCE
Ajoutez @babel/plugin-transform-modules-commonjs à votre configuration, puis lancez babel input.mjs -o output.cjs pour réécrire les imports en require.
Rollup FREE
Définissez output.format sur cjs dans rollup.config.js et lancez la construction ; Rollup génère un paquet CommonJS à partir de votre entrée ESM.
À propos de ces formats
Un fichier .mjs est un code source JavaScript que Node.js traite comme un module ECMAScript, ce qui signifie qu'il utilise import et export au lieu du require de CommonJS. L'extension…
Ouvrir les détails de .MJS →Un fichier .CJS est un fichier de données utilisé par un logiciel spécifique.
Ouvrir les détails de .CJS →Qualité et points de vigilance
- Le
awaitau niveau supérieur n'a pas d'équivalent CommonJS et l'échec de la conversion est inévitable. - Les exports nommés deviennent des propriétés sur
module.exports, et l'interopérabilité avec les exports par défaut peut différer subtilement. - Les chemins d'accès
importrelatifs etimport.meta.urlpeuvent nécessiter un ajustement pour la sortie CommonJS.
Foire aux questions
Puis-je convertir manuellement ?
import x from 'y' par const x = require('y') et export par module.exports.Pourquoi ma construction a-t-elle échoué ?
await au niveau supérieur, que CommonJS ne peut pas exprimer ; déplacez-le à l'intérieur d'une fonction asynchrone.Dois-je renommer en .cjs ?
package.json contient "type": "module" ; l'extension .cjs force Node à le traiter comme du CommonJS.