Dlaczego konwertować MJS na CJS?
Użytkownicy konwertują pliki na .CJS, aby uruchamiać kod w starszych konfiguracjach Node.js lub narzędziach oczekujących CommonJS, albo aby dostarczyć wersję kompatybilną z require obok wersji ESM. Logika pozostaje ta sama; zmienia się tylko sposób łączenia modułów.
Jak przekonwertować MJS na CJS
esbuild EASIEST
Uruchom esbuild input.mjs --format=cjs --platform=node --outfile=output.cjs, aby wygenerować CommonJS. Dodaj --bundle, jeśli chcesz również dołączyć zależności wewnątrz pliku.
Babel OPEN-SOURCE
Dodaj @babel/plugin-transform-modules-commonjs do swojej konfiguracji, a następnie uruchom babel input.mjs -o output.cjs, aby przepisać importy na require.
Rollup FREE
Ustaw output.format na cjs w rollup.config.js i zbuduj projekt; Rollup wygeneruje pakiet CommonJS z Twojego pliku wejściowego ESM.
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 .CJS to plik danych używany przez określone oprogramowanie.
Otwórz szczegóły .CJS →Jakość i na co uważać
- Top-level
awaitnie ma odpowiednika w CommonJS i konwersja zakończy się niepowodzeniem. - Eksporty nazwane stają się właściwościami
module.exports, a współpraca z eksportami domyślnymi (default exports) może się subtelnie różnić. - Relatywne ścieżki
importorazimport.meta.urlmogą wymagać dostosowania dla wyjściowego formatu CommonJS.
Najczęściej zadawane pytania
Czy mogę dokonać konwersji ręcznie?
import x from 'y' na const x = require('y') oraz export na module.exports.Dlaczego mój proces budowania się nie powiódł?
await, którego CommonJS nie potrafi wyrazić; przenieś go do wnętrza funkcji asynchronicznej.Czy muszę zmieniać nazwę na .cjs?
package.json ma ustawione "type": "module"; rozszerzenie .cjs wymusza na Node traktowanie pliku jako CommonJS.