Динамический импорт в другую папку

У меня есть некоторые проблемы, чтобы динамически импортировать класс.

Я использую псевдоним для этого проекта:

config.resolve.alias = {
    App: path.resolve('./src/'),
    Reactive: path.resolve('./app/')
}

Я хочу импортировать список классов:

const classes = {
    foo: 'App/Foo',
    bar: 'App/Bar'
};
let list = {};
for(var c in classes) {
    (async (k, v, list) => {
        const m = await import(`${v}`);
        list[k] = new m.default();
    })(c, classes[c], list);
}

Этот скрипт называется в appи все импортированные классы в src,

Ошибка проста: Cannot find module 'App/Foo',

Когда я проверяю последнюю запись в журнале ошибок:

var map = {
    "./OtherClass1": [
        "./app/OtherClass1.js"
    ],
    "./OtherClass1.js": [
        "./app/OtherClass1.js"
    ],
    "./OtherClass2": [
        "./app/OtherClass2.js"
    ],
    "./OtherClass2.js": [
        "./app/OtherClass2.js"
    ]
};
function webpackAsyncContext(req) {
    var ids = map[req];
    if(!ids)
        return Promise.reject(new Error("Cannot find module '" + req + "'."));
    return Promise.all(ids.slice(1).map(__webpack_require__.e)).then(function() {
        return __webpack_require__(ids[0]);
    });
};
webpackAsyncContext.keys = function webpackAsyncContextKeys() {
    return Object.keys(map);
};
webpackAsyncContext.id = "./app lazy recursive ^.*$";
module.exports = webpackAsyncContext;

Итак, ошибка законна, потому что map не содержит Foo а также Bar занятия в srcтолько в app,

Как мне указать, чтобы Webpack проверял обе папки рекурсивно?

Но когда я проверяю это, все работает нормально:

for(var c in classes) {
    (async (k, v, list) => {
        const m = await import(`${"App/Foo"}`);
        list[k] = new m.default();
    })(c, classes[c], list);
}

1 ответ

Используйте реагировать на импорт, чтобы импортировать ваш файл и использовать file.classname позвонить им

например import claases from '/src';

и используйте ссылку

app = classes.myfile

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