#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 ...
но на самом деле у меня может быть много пользовательских модулей, и мне интересно, могу ли я просто использовать свой метод ранее, чтобы загрузить все это. любое решение / предложение будет очень оценено.