Ошибка при запуске скомпилированного проекта typescript с динамически импортируемыми модулями

#javascript #typescript #ecmascript-6

#javascript #typescript #ecmascript-6

Вопрос:

я пытаюсь динамически импортировать пользовательские модули в свой проект. например, у меня есть такая структура проекта;

  -modules
| |-modules-1.ts
| |-modules-2.ts
|  -modules-3.ts
|
 -index.ts
  

где index.ts я пытаюсь загрузить все файлы следующим modules образом:

 import fs from 'fs';

fs.readdirSync(`./modules`).forEach(async (file: string) => {
    const source = await import(`./modules/${file}`);

    // rest of codes ...
});
  

И в module-1.ts :

 import express from `express`;

// rest of the code ...
  

все в порядке, когда я запускаю его с помощью nodemon index.ts . но когда я скомпилировал его с помощью tsc -p . и запустил .js файл, я получил эту ошибку;

 (node:50543) UnhandledPromiseRejectionWarning: /home/project/Modules/module-1.ts:1
import express from 'express':
^^^^^^

SyntaxError: Cannot use import statement outside a module
  

я пытался использовать require() вместо import() , но результат все тот же. это сработало, если я импортировал модули 1 на 1, как (в index.ts );

 import * as module1 from './modules/module-1.ts';
import * as module2 from './modules/module-2.ts';
import * as module3 from './modules/module-3.ts';

// rest of the code ...
  

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