esm не разрешает псевдоним модуля - PullRequest
0 голосов
/ 08 ноября 2018

Так что я использую пакеты esm и module-alias, но кажется, что esm не регистрирует пути псевдонимов модулей.

Вот как я загружаю файл моего сервера:

nodemon -r esm ./src/index.js 8081

Вот вершина моего index.js файла:

import "module-alias/register"
import "@/setup"

import "@/setup" не работает, тогда как require("@/setup") работает.

1 Ответ

0 голосов
/ 15 ноября 2018

Проблема в том, что esm пытается обработать все операторы import при синтаксическом анализе файла перед загрузкой любого другого модуля.

При обработке import операторов он использует встроенную в узел require, а не модифицированную require, созданную module-alias

Чтобы это исправить, вам нужно сначала загрузить module-alias, а затем esm. Таким образом, module-alias получит возможность изменить функцию require, прежде чем esm сможет что-либо сделать.

Вы можете достичь этого, передав несколько параметров -r на узел, но убедитесь, что module-alias идет первым:

node -r module-alias/register -r esm index.js 8081

или с nodemon:

nodemon -r module-alias/register -r esm ./src/index.js 8081

Вам также необходимо удалить import "module-alias/register" из вашего кода, поскольку теперь он загружается из командной строки.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...