Varför konvertera MJS till JS?
Man konverterar .mjs till vanlig .js för att slippa det explicita ES-modul-tillägget och låta projektets package.json avgöra modulsystemet, eller för att leverera CommonJS-utdata som äldre Node-versioner och verktyg kan ladda utan ESM.
Hur man konverterar MJS till JS
Byt namn och ställ in package.json-typ EASIEST
Byt namn på filen till .js och lägg till „type“: „module“ i package.json så att Node fortsätter att behandla den som en ES-modul.
Babel OPEN-SOURCE
Installera @babel/plugin-transform-modules-commonjs (eller @babel/preset-env) och kör babel file.mjs --out-file file.js för att skriva om import/export till CommonJS require/module.exports.
esbuild OPEN-SOURCE
Kör esbuild file.mjs --format=cjs --platform=node --outfile=file.js för att skapa ett CommonJS .js-paket från ES-modulen.
Visual Studio Code FREE
Öppna .mjs i VS Code, byt namn till .js, och använd redigeraren för att konvertera import/export-satser manuellt för små filer.
Om dessa format
En .mjs-fil är JavaScript-källkod som Node.js behandlar som en ECMAScript-modul, vilket innebär att den använder import och export istället för CommonJS require. Filändelsen finns för att…
Öppna detaljer för .MJS →En JS-fil är en JavaScript-källkodsfil - vanlig, läsbar text som driver interaktivitet på webbsidor och serverapplikationer via Node.js. Öppna den i valfri kodredigerare som VS Code eller…
Öppna detaljer för .JS →Kvalitet & vad man bör tänka på
- Att bara byta namn ändrar inte koden; om
package.jsoninte är inställd på„type“: „module“kommer ESM-syntax i en.js-fil att kasta ettSyntaxError. - Transpilering till CommonJS ändrar
import/exporttillrequire/module.exportsoch kan påverka beteendet för top-levelawaitochimport.meta. - En bundlare som esbuild kan baka in beroenden och ta bort kommentarer, så utdata-filen
.jsär inte en exakt kopia rad för rad av källan.
Vanliga frågor
Är `.mjs` samma sak som `.js`?
.mjs betyder alltid en ES-modul, medan .js följer vad package.json anger - CommonJS som standard, eller ESM om „type“: „module“ finns.Kan jag bara byta namn på `.mjs` till `.js`?
package.json har „type“: „module“. Annars behandlar Node .js-filen som CommonJS och ESM-syntax kommer att ge fel.Hur behåller jag ESM efter namnbyte?
„type“: „module“ i din package.json, eller använd filtillägget .mjs. Båda talar om för Node att tolka filen som en ES-modul.