В NestJS для обработки статических файлов, таких как HTML, CSS, изображения и другие, вы можете использовать модуль Express. NestJS является фреймворком, построенным на основе Express, поэтому можно использовать его возможности напрямую.
Для начала, вам потребуется установить Express и его типы, если они еще не установлены:
npm install express @types/express
Далее, вам нужно создать модуль, который будет обрабатывать статические файлы. Создайте новый файл с именем, например, static.module.ts
, и добавьте следующий код:
import { Module, NestModule, MiddlewareConsumer } from '@nestjs/common'; import { join } from 'path'; import { Express } from 'express'; @Module({}) export class StaticModule implements NestModule { configure(consumer: MiddlewareConsumer) { // Путь к статическим файлам const staticFolderPath = join(__dirname, '../public'); consumer.apply((req, res, next) => { // Проверка, нужно ли обрабатывать этот запрос статическим файлом if (req.url.startsWith('/static')) { return next(); } // Передать управление Express для обработки запроса (req as any).expressApp.use(express.static(staticFolderPath)); next(); }).forRoutes('*'); } }
Здесь мы определяем модуль StaticModule
, который реализует интерфейс NestModule
. В методе configure
мы настраиваем консьюмера, который будет применяться ко всем маршрутам приложения.
Для каждого запроса, первым делом мы проверяем, начинается ли URL с /static
. Если это так, это означает, что запрос уже является статическим файлом, и мы передаем управление следующему обработчику. В противном случае мы используем функцию express.static
для обработки запроса и передаем управление следующему обработчику.
Далее, в вашем приложении AppModule
вы должны импортировать созданный StaticModule
:
import { Module } from '@nestjs/common'; import { StaticModule } from './static.module'; @Module({ imports: [StaticModule], }) export class AppModule {}
После этого у вас должна быть настроена обработка статических файлов через Express в NestJS. Разместите свои статические файлы в папке public
в корневом каталоге вашего проекта, и они будут доступны по URL-адресу, указанному в правилах пути.
Например, если у вас есть файл styles.css
внутри папки public
, вы можете получить доступ к нему по URL /styles.css
.