Как сделать динамический импорт в typescript?
Статический импорт, все работает:
import {
FastifyAdapter,
NestFastifyApplication,
} from '@nestjs/platform-fastify';
Динамический импорт, не работает:
Первый вариант:
const { FastifyAdapter, NestFastifyApplication } = await import(
'@nestjs/platform-fastify'
);
Второй вариант:
const { FastifyAdapter } = await import('@nestjs/platform-fastify');
const { NestFastifyApplication } = await import('@nestjs/platform-fastify');
Третий вариант:
const { default: FastifyAdapter } = await import('@nestjs/platform-fastify');
const { default: NestFastifyApplication } = await import('@nestjs/platform-fastify');
Получаю ошибку:
TS2339: Property 'NestFastifyApplication' does not exist on type '{ default: typeof import("L:/Test/nestjs-test/node_modules/@nestjs/platform-fastify/index"); FastifyAdapter: typeof FastifyAdapter; }'.
Как решить?
Update:
Функция:
async function fastifyBootstrap() {
const { default: NestFastifyApplication, FastifyAdapter } = await import(
'@nestjs/platform-fastify'
);
return await NestFactory.create<NestFastifyApplication>(
AppModule,
new FastifyAdapter(),
);
}
Ответы (1 шт):
Автор решения: Qwertiy
→ Ссылка
Если прочитать ошибку, то должно быть так:
const { default: NestFastifyApplication, FastifyAdapter } = await import('@nestjs/platform-fastify');
Хотя этому соответствует другой статический импорт:
import NestFastifyApplication, { FastifyAdapter } from '@nestjs/platform-fastify';
TS2749: 'NestFastifyApplication' refers to a value, but is being used as a type here. Did you mean 'typeof NestFastifyApplication'?
Так типы есть только при компиляции - импортируй явно только тип в коде, а в динамический импорт пихай только реально существующие сущности:
import type { NestFastifyApplication } from '@nestjs/platform-fastify'
const { FastifyAdapter } = await import('@nestjs/platform-fastify')