# Модули CommonJS

Загрузчик модулей CommonJS(opens new window) , функция require(), так же доступен для ES4X. Важно понимать, что этот загрузчик отличается от загрузчика nodejs. Это форк от npm-jvm(opens new window) , специфичный для ES4X.

# Конкретные различия

Модули могут быть загружены из файловой системы или из содержимого jar-файлов. Процесс загрузки всегда идет через Vert.x FileSystem(opens new window) .

# Импорт синтаксиса ESM

Редакторы кода, такие как Visual Studio Code(opens new window) , предпочитают автоматически завершать выражения с помощью синтаксиса ESM. Разумеется, такой синтаксис не совместим с commonjs, однако загрузчик постарается переделать выражения импорта под commonjs, если это возможно.

Рассмотрим следующий пример:

 





import { TestSuite } from '@vertx/unit';

const suite = TestSuite.create("the_test_suite");
// ...
suite.run();

Этот код несовместим с commonjs, однако функция require() изменит исходный код на следующий:

 





const TestSuite = require('@vertx/unit').TestSuite;

const suite = TestSuite.create("the_test_suite");
// ...
suite.run();

WARNING

Выражения импорта будут исправлены, но не выражения экспорта. Все выражения экспорта должны использовать формат commonjs:

module.exports = { /* ... */ }