Dlaczego konwertować MJS na JS?
Użytkownicy konwertują .mjs na zwykły .js, aby zrezygnować z jawnego rozszerzenia modułu ES i pozwolić, by to package.json projektu decydował o systemie modułów, lub aby dostarczyć kod CommonJS, który starsze wersje Node i narzędzia mogą załadować bez ESM.
Jak przekonwertować MJS na JS
Zmiana nazwy i ustawienie typu w package.json EASIEST
Zmień nazwę pliku na .js i dodaj "type": "module" do package.json, aby Node nadal traktował go jako moduł ES.
Babel OPEN-SOURCE
Zainstaluj @babel/plugin-transform-modules-commonjs (lub @babel/preset-env) i uruchom babel file.mjs --out-file file.js, aby przepisać import/export na CommonJS require/module.exports.
esbuild OPEN-SOURCE
Uruchom esbuild file.mjs --format=cjs --platform=node --outfile=file.js, aby wygenerować pakiet .js w formacie CommonJS z modułu ES.
Visual Studio Code FREE
Otwórz .mjs w VS Code, zmień nazwę na .js i użyj edytora, aby ręcznie przekonwertować instrukcje import/export w przypadku małych plików.
O tych formatach
Plik .mjs to kod źródłowy JavaScript, który Node.js traktuje jako moduł ECMAScript, co oznacza, że używa on import i export zamiast CommonJS require. Rozszerzenie to istnieje, aby Node mógł…
Otwórz szczegóły .MJS →Plik JS to plik kodu źródłowego JavaScript - zwykły, czytelny tekst, który napędza interaktywność stron internetowych i aplikacje serwerowe poprzez Node.js. Można go otworzyć w dowolnym…
Otwórz szczegóły .JS →Jakość i na co uważać
- Sama zmiana nazwy nie zmienia kodu; jeśli
package.jsonnie ma ustawionego"type": "module", składnia ESM w pliku.jsspowoduje błądSyntaxError. - Transpilacja do CommonJS zmienia
import/exportnarequire/module.exportsi może wpłynąć na działanieawaitna najwyższym poziomie orazimport.meta. - Bundler taki jak esbuild może wstawiać zależności wewnątrz pliku i usuwać komentarze, więc wynikowy
.jsnie jest kopią źródła linia po linii.
Najczęściej zadawane pytania
Czy `.mjs` to to samo co `.js`?
.mjs zawsze oznacza moduł ES, podczas gdy .js zachowuje się zgodnie z ustawieniami package.json - domyślnie jako CommonJS lub jako ESM, jeśli obecny jest wpis "type": "module".Czy mogę po prostu zmienić nazwę `.mjs` na `.js`?
package.json ma "type": "module". W przeciwnym razie Node potraktuje .js jako CommonJS i składnia ESM zgłosi błąd.Jak zachować ESM po zmianie nazwy?
"type": "module" do swojego package.json lub używaj rozszerzenia .mjs. Oba sposoby informują Node, aby przetwarzał plik jako moduł ES.