Typescript - невозможно динамически импортировать класс - PullRequest
0 голосов
/ 28 июня 2019

У меня есть несколько классов в папке с именем «controllers».Из моего файла «main.ts» я перечисляю классы из этой папки «controllers» и пытаюсь динамически импортировать их.

Каждый класс экспортируется с использованием «export default»

Что я пробовал:

  • Удаление экспорта по умолчанию из импортируемых классов

Результат:

  • Не выдает никакой ошибки
  • Значение Foo: { default: {} }

. / Controllers / LoginController.ts

export default class LoginController {
    ...
    ...
    ...
}

. / Main.ts

glob("**/*.controller.ts", {}, async function (er, paths: string[]) {
    // files is an array of filenames.
    // If the `nonull` option is set, and nothing
    // was found, then files is ["**/*.js"]
    // er is an error object or null.
    for (const path of paths) {

        try {

            const foo = require(`../${path}`)
            console.log(foo)
        } catch (e) {
            console.log(e)
        }
    }
});

Вот мой терминалвывод при запуске вещи:

Дело в том, что с машинописью я использую это для динамического импорта любого класса, я получаю следующую ошибку:

export default class LoginController {
[0] ^^^^^^
[0]
[0] SyntaxError: Unexpected token export
[0]     at Module._compile (internal/modules/cjs/loader.js:703:23)
[0]     at Object.Module._extensions..js (internal/modules/cjs/loader.js:770:10)
[0]     at Module.load (internal/modules/cjs/loader.js:628:32)
[0]     at Function.Module._load (internal/modules/cjs/loader.js:555:12)
[0]     at Module.require (internal/modules/cjs/loader.js:666:19)
[0]     at require (internal/modules/cjs/helpers.js:16:16)
[0]     at /Users/absystech/Development/Absystech/espace client/backend/dist/main.js:25:29
[0]     at Generator.next (<anonymous>)
[0]     at /Users/absystech/Development/Absystech/espace client/backend/dist/main.js:8:71
[0]     at new Promise (<anonymous>)

Может кто-нибудь помочь мне в этом, заранее спасибо!

1 Ответ

0 голосов
/ 28 июня 2019

Функциональность импорта / экспорта машинописного текста - это не то, что происходит во время выполнения, поэтому динамический импорт таким способом невозможен.

Импорт / экспорт происходит во время компиляции / комплектации.

...