РЕПЕТИТОР математика физика информатика
Для школьников и студентов. Подтягивание пробелов. ЦЭ, ЦТ, ОГЭ, ЕГЭ.
Идет набор на ЛЕТО. Жмите для подробностей:)
⊗jsnsSpCoAc 196 of 201 menu
◀ ▶

Консоль приложения в Nest

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

Для этого заводят вторую точку входа рядом с веб main.ts. NestFactory.createApplicationContext поднимает IoC контейнер по корневому модулю, но не открывает HTTP. Порт не занят, middleware и цепочки запроса не участвуют, зато провайдеры и модули собираются так же, как перед стартом сервера.

Покажем на примере постов:

import { Module } from '@nestjs/common'; import { PostService } from './post.service.js'; @Module({ providers: [PostService], }) export class PostsModule {}
import { Module } from '@nestjs/common'; import { PostsModule } from './posts/posts.module.js'; @Module({ imports: [PostsModule], }) export class AppModule {}

Консольный файл только создаёт контекст и закрывает его, чтобы процесс завершился:

import { NestFactory } from '@nestjs/core'; import { AppModule } from './app.module.js'; async function bootstrap() { const app = await NestFactory.createApplicationContext(AppModule); await app.close(); } await bootstrap();

Добавьте отдельную точку входа для консоли, которая поднимает контекст с модулем WorkersModule и завершает процесс без прослушивания порта.

← →
↑
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить