Angular 9 Динамический импорт модулей с динамическими маршрутами

Я хочу динамически импортировать модули angular с маршрутами переменных строк из серверной службы. Например, моя внутренняя служба отправляет мне этот ответ при запуске приложения (с использованием APP_INITIALIZER).

{
    "hostname": "a-tenant",
    "modules": {
        "home": {
            "class": "HomeAModule",
            "path": "home-a.module",
         },
    },
},

Моя структура приложения:

структура проекта

Итак, я хочу импортировать такой модуль

const path = `./tenants/${response.hostname}/home/${response.modules.home.path}`;

import(path).then(m => m[response.modules.home.class]);

Мой окончательный код импорта должен быть таким во время выполнения:

import('./tenants/a-tenant/home/home-a.module').then(m => m.HomeAModule);

Но я получаю эту ошибку, я думаю, что webpack не обрабатывает такие динамические нагрузки.

Спасибо за помощь :)

Ошибка


person Ömrüm Baki    schedule 25.05.2020    source источник
comment
Вы когда-нибудь находили решение этой проблемы? Я в похожей ситуации: stackoverflow.com/questions/62304831/   -  person Stuart Allen    schedule 10.06.2020
comment
К сожалению, это невозможно. Я сейчас импортирую модули со статическими путями.   -  person Ömrüm Baki    schedule 11.06.2020


Ответы (1)


К сожалению, использование динамической строки для динамического импорта невозможно.

person DMITRYTISHKIN    schedule 25.05.2020
comment
Вот хорошее объяснение того, почему ... динамический импорт отлично подходит для разделения кода на детальном уровне. Они позволяют нам устанавливать границы отложенной загрузки в нашем приложении. В то же время, из-за своей динамической природы, они часто позволяют нам проникнуть в код, который требует данных времени выполнения для разрешения импортированного модуля ... мы должны быть крайне осторожны, потому что мы ограничиваем возможности инструментов, которые мы используем. с использованием. Мы жертвуем автоматическим объединением лениво загружаемых фрагментов, выводом типов и многим другим. - person bzzWomp; 28.04.2021