Поддержка `import` в Node.JS - ложь

Или может я что то не так делаю?

В документации говорится, что в Node.JS имеется экспериментальный загрузчик модулей ES6, начиная с версии 10. Я долго жду этого - загрузка модулей - это единственное, что мешает мне беспрепятственно использовать один и тот же код в браузере и узле.

Мой код:

import findNextBracket from "./BracketFinder.js";

Как я запускаю узел:

node --experimental-modules ConvertToEs6Modules.js

Как я разочаровался

(node:7116) ExperimentalWarning: The ESM module loader is experimental.
D:\web\lines\ConvertToEs6Modules.js:1
(function (exports, require, module, __filename, __dirname) { import findNextBracket  from "./BracketFinder.js";
                                                                     ^^^^^^^^^^^^^^^

SyntaxError: Unexpected identifier
    at new Script (vm.js:74:7)
    at createScript (vm.js:246:10)
    at Proxy.runInThisContext (vm.js:298:10)
    at Module._compile (internal/modules/cjs/loader.js:670:28)
    at Object.Module._extensions..js (internal/modules/cjs/loader.js:713:10)
    at Module.load (internal/modules/cjs/loader.js:612:32)
    at tryModuleLoad (internal/modules/cjs/loader.js:551:12)
    at Function.Module._load (internal/modules/cjs/loader.js:543:3)
    at createDynamicModule (internal/modules/esm/translators.js:54:15)
    at setExecutor (internal/modules/esm/create_dynamic_module.js:50:23)

Также Visual Studio зависает, если вы пытаетесь запустить такой файл в нем, вместо того, чтобы показывать ошибку выше.

1 ответ

Решение

Ваши файлы должны иметь .mjs расширение. Смотрите документы здесь

Как только это будет установлено, файлы, заканчивающиеся на .mjs сможет загружаться как ES Модули.

Другие вопросы по тегам