Створення та запуск проекту NestJS локально на macOS через ServBay
NestJS — це прогресивний Node.js-фреймворк для створення ефективних, масштабованих серверних застосунків на Node.js. Він написаний на TypeScript, натхненний Angular і використовує модульну архітектуру та патерн ін'єкції залежностей (DI). NestJS пропонує потужні інструменти та можливості, які допомагають розробникам легко створювати масштабовані, тестовані та високодекомпозовані додатки.
Основні переваги та риси NestJS
- Модульна архітектура: Код організовано за допомогою модулів, що робить проєкт структурованим, зрозумілим і легким у підтримці.
- Ін'єкція залежностей: Зручна та потужна система DI, яка значно підвищує тестованість та підтримуваність коду.
- TypeScript: Використання статичної типізації, інтерфейсів та сучасних можливостей JavaScript, що покращує якість і надійність коду, а також зменшує кількість помилок під час виконання.
- Декоратори: Використання декораторів (Decorators) для визначення контролерів, сервісів та модулів дозволяє писати чистий, декларативний і явний код.
- Потужна екосистема: Активна спільнота та підтримка багатьох сторонніх модулів і плагінів дають змогу просто інтегрувати TypeORM, Mongoose, GraphQL, WebSockets, кешування, валідацію й інші популярні функції.
- Підтримка стандартів: Побудований на перевірених HTTP-фреймворках, таких як Express або Fastify, що гарантує гарну сумісність і високу продуктивність.
NestJS дозволяє впроваджувати кращі практики бекенд-розробки (наприклад, принципи SOLID, патерни проєктування) для швидкого створення високопродуктивних, корпоративних вебдодатків, API та мікросервісів.
Створення та запуск NestJS проекту через ServBay
ServBay пропонує потужне та комплексне локальне середовище веб-розробки для macOS із підтримкою різних версій Node.js, популярних баз даних та вебсерверів. У цьому гайді ви дізнаєтесь, як скористатися середовищем Node.js від ServBay та функцією «Сайт» для створення, запуску та налаштування NestJS проекту. Ми також скористаємося функцією зворотного проксі, щоб мати доступ до локального застосунку через індивідуальний домен.
Передумови
Перед початком роботи, переконайтеся, що у вас виконані такі вимоги:
- Встановлено ServBay: Ви вже успішно встановили ServBay на macOS.
- Увімкнено Node.js: У вкладці «Пакети» (Packages) панелі керування ServBay переконайтесь, що бажану версію Node.js встановлено та увімкнено. Якщо Node.js ще не увімкнено — налаштуйте за інструкцією ServBay по Node.js.
Створення проекту NestJS
Глобальна інсталяція NestJS CLI
Відкрийте термінал і виконайте глобальну установку CLI NestJS через npm (npm зазвичай встановлюється разом із Node.js). NestJS CLI — це потужний інструмент для ініціалізації, розробки та підтримки NestJS проектів.
bashnpm install -g @nestjs/cli
1Ініціалізація проекту
Перейдіть у рекомендовану директорію для сайтів:
/Applications/ServBay/www
. Це стандартна папка для вебпроєктів у ServBay, що спрощує подальше налаштування сайту. Створіть новий проект за допомогою NestJS CLI:bashcd /Applications/ServBay/www nest new servbay-nest-app
1
2Після запуску команди CLI проведе вас кроками створення проекту і запропонує вибрати менеджер пакетів (npm, yarn або pnpm). Для стабільності рекомендуємо використовувати npm. Новий проект створиться у папці
/Applications/ServBay/www/servbay-nest-app
.Встановлення залежностей проекту
Зайдіть до новоствореного каталогу
servbay-nest-app
і встановіть необхідні залежності:bashcd servbay-nest-app npm install
1
2Команда
nest new
автоматично виконуєnpm install
, але повторний запуск забезпечить актуальність та повноту встановлення.
Зміна відповіді NestJS проекту (необов’язково)
Для перевірки що проект успішно працює й доступний через ServBay, змінимо стандартний респонс кореневого маршруту.
Змініть файл
src/app.controller.ts
Відкрийте файл
src/app.controller.ts
у вибраному редакторі коду. Замініть вміст так, щоб при доступі до кореневого шляху (/
) поверталось повідомлення "Hello ServBay!":typescriptimport { Controller, Get } from '@nestjs/common'; import { AppService } from './app.service'; // Припустимо, AppService залишено у проекті @Controller() export class AppController { constructor(private readonly appService: AppService) {} // якщо AppService залишено @Get() getHello(): string { // return this.appService.getHello(); // якщо використовується AppService return 'Hello ServBay!'; // повертається рядок напряму } }
1
2
3
4
5
6
7
8
9
10
11
12
13Цей код визначає простий контролер для обробки GET-запитів до кореня застосунку і повертає заданий текст.
Запуск NestJS у режимі розробки та доступ через ServBay
NestJS зазвичай у режимі розробки працює через вбудований сервер і слухає вказаний порт. З ServBay легко налаштувати зворотній проксі й звертатися до проекту через власний домен.
Запустіть сервер розробки
У кореневому каталозі
/Applications/ServBay/www/servbay-nest-app
виконайте запуск сервера NestJS. За допомогою змінноїPORT
можна встановити, наприклад, порт8585
:bashcd /Applications/ServBay/www/servbay-nest-app PORT=8585 npm run start:dev
1
2Скрипт
npm run start:dev
— це стандартна команда NestJS для запуску застосунку черезts-node
із файловим моніторингом, що автоматично перезапускає сервер при зміні коду. Сервер слухає наlocalhost:8585
.Налаштуйте зворотній проксі ServBay для сайту
Відкрийте панель керування ServBay і перейдіть у вкладку «Сайти» (Websites). Натисніть кнопку додавання нового сайту (зазвичай знак
+
) і заповніть:- Ім'я (Name): наприклад,
My first NestJS dev site
. - Домен (Domains): придумайте домен, як-от
servbay-nest-test.dev
. ServBay автоматично спрямує TLD.dev
на localhost без потреби редагувати hosts. - Тип (Type): виберіть
Reverse Proxy
(Зворотній проксі). - IP-адреса (IP Address): введіть
127.0.0.1
. - Порт (Port): вкажіть порт, який слухає NestJS — у прикладі це
8585
.
Збережіть налаштування — ServBay автоматично оновить конфігурацію вебсерверу (Caddy або Nginx). Детальніше дивіться у документації щодо додавання сайту у ServBay.
- Ім'я (Name): наприклад,
Відвідайте сайт у режимі розробки
В браузері відкрийте сконфігурований домен, наприклад,
https://servbay-nest-test.dev
.Зверніть увагу:
- ServBay за замовчуванням генерує безкоштовний SSL-сертифікат (виданий ServBay User CA) для локальних сайтів — ваш проект одразу доступний через HTTPS. Якщо браузер попереджає про недовіру до сертифіката — додайте ServBay User CA до довірених. Інструкція: Використання SSL для захисту сайту.
- Переконайтесь, що сервер NestJS (
PORT=8585 npm run start:dev
) активний — якщо зупинити процес, домен не відкриватиметься.
Розгортання у production-режимі та доступ через ServBay
Для розгортання NestJS у «продакшн» (у т.ч. для емуляції продакшн-оточення локально) треба спочатку виконати білд проекту.
Збірка production-версії
У каталозі
/Applications/ServBay/www/servbay-nest-app
виконайте:bashcd /Applications/ServBay/www/servbay-nest-app npm run build
1
2Команда скомпілює TypeScript-файли у папку
dist
.Запуск production-серверу
Після збірки — запускайте застосунок командою. Використовується
node dist/main.js
, встановіть порт наприклад на8586
і середовище уproduction
:bashcd /Applications/ServBay/www/servbay-nest-app PORT=8586 NODE_ENV=production node dist/main.js
1
2У production-режимі немає «гарячого» перезапуску та моніторингу змін.
Налаштуйте зворотній проксі для production-сайту
Знов на вкладці «Сайти» у ServBay додайте або відредагуйте налаштування:
- Ім'я (Name): наприклад,
My first NestJS production site
. - Домен (Domains): наприклад,
servbay-nest-test.prod
. - Тип (Type):
Reverse Proxy
. - IP-адреса (IP Address):
127.0.0.1
. - Порт (Port):
8586
(той, що вказали на попередньому кроці).
Збережіть налаштування.
- Ім'я (Name): наприклад,
Перевірте production-сайт
У браузері відкрийте
https://servbay-nest-test.prod
— ваш застосунок у production-режимі готовий. Також ServBay забезпечує автоматичне шифрування через SSL.
Підключення до баз даних ServBay
ServBay містить підтримку кількох баз даних: MariaDB (сумісну з MySQL), PostgreSQL, MongoDB, Redis. У процесі розробки NestJS можна підключатися до всіх цих систем без зайвих зусиль.
Важливо! Перед підключенням до БД переконайтесь, що в панелі керування ServBay у вкладці «Пакети» (Packages) відповідний пакет бази даних увімкнено. Стандартні порти, логіни і паролі можна подивитися у панелі керування або у документації. Для production-оточення настійно рекомендується змінити стандартні паролі та створити окремі користувачі БД.
Нижче наведено приклади конфігурацій підключення у NestJS до різних баз даних через популярні бібліотеки/ORM. Зазвичай ці налаштування містяться у головному модулі проекту (AppModule
) або в окремому модулі для роботи з БД.
Підключення до MongoDB
Для інтеграції використовуйте пакет
@nestjs/mongoose
:bashnpm install @nestjs/mongoose mongoose
1Далі зареєструйте модуль у проекті:
typescriptimport { Module } from '@nestjs/common'; import { MongooseModule } from '@nestjs/mongoose'; // ... інші імпорти @Module({ imports: [ MongooseModule.forRoot('mongodb://localhost:27017/servbay-nest-app'), // Стандартний порт 27017 // ... інші модулі ], controllers: [], // ... providers: [], // ... }) export class AppModule {}
1
2
3
4
5
6
7
8
9
10
11
12
13Зазвичай рядок підключення:
mongodb://localhost:27017/
. За необхідності створіть БДservbay-nest-app
через клієнт MongoDB (наприклад, MongoDB Compass абоmongosh
).Підключення до Redis
Скористайтеся модулем
@nestjs/redis
:bashnpm install @nestjs/redis redis @types/redis
1Зареєструйте
RedisModule
так:typescriptimport { Module } from '@nestjs/common'; import { RedisModule } from '@nestjs/redis'; // ... інші імпорти @Module({ imports: [ RedisModule.forRoot({ url: 'redis://localhost:6379', // Стандартний порт 6379 }), // ... інші модулі ], controllers: [], // ... providers: [], // ... }) export class AppModule {}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15Стандартна адреса:
localhost:6379
.Підключення до MariaDB (MySQL)
Для MariaDB підійде модуль
@nestjs/typeorm
(ServBay підтримує MariaDB і MySQL — обидва сумісні за протоколом). Тип у TypeORM можна задавати якmysql
абоmariadb
. Встановіть необхідні пакети:bashnpm install @nestjs/typeorm mysql2 typeorm
1Далі модуль у проекті:
typescriptimport { Module } from '@nestjs/common'; import { TypeOrmModule } from '@nestjs/typeorm'; // ... інші імпорти @Module({ imports: [ TypeOrmModule.forRoot({ type: 'mariadb', // або 'mysql' host: 'localhost', port: 3306, // Стандартний порт 3306 username: 'root', // Стандартний root для ServBay MariaDB/MySQL password: 'password', // Стандартний пароль root у ServBay MariaDB/MySQL database: 'servbay_nest_app', // Створіть БД вручну entities: [], // Масив ваших класів-ентітей synchronize: true, // Для розробки true, у production не рекомендується }), // ... інші модулі ], controllers: [], // ... providers: [], // ... }) export class AppModule {}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22Зверніть увагу: Стандартний пароль для користувача
root
у ServBay —password
. Скористайтесь клієнтом бази даних (TablePlus, DBeaver або CLI) для під'єднання доlocalhost:3306
і створення БДservbay_nest_app
. Заради безпеки змініть пароль root і створіть окремих користувачів для додатку.Підключення до PostgreSQL
Також через
@nestjs/typeorm
. Встановіть потрібні бібліотеки:bashnpm install @nestjs/typeorm pg typeorm
1У module:
typescriptimport { Module } from '@nestjs/common'; import { TypeOrmModule } from '@nestjs/typeorm'; // ... інші імпорти @Module({ imports: [ TypeOrmModule.forRoot({ type: 'postgres', host: 'localhost', port: 5432, // Стандартний порт 5432 username: 'servbay', // Приклад стандартного користувача для ServBay PostgreSQL. Перевірте актуальні налаштування! password: 'password', // Приклад стандартного пароля для PostgreSQL у ServBay database: 'servbay_nest_app', // Створіть БД вручну entities: [], // Масив ентітей synchronize: true, // Для розробки true, у продакшн — false }), // ... інші модулі ], controllers: [], // ... providers: [], // ... }) export class AppModule {}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22Зверніть увагу: Стандартний користувач і пароль для PostgreSQL в ServBay можуть відрізнятися (
servbay
,postgres
тощо). Перевірте їх у документації чи панелі керування перед підключенням. Для створення БД скористайтесь клієнтом PostgreSQL. У production-оточенні обов'язково замініть стандартні облікові дані.
Підсумок
У цьому посібнику ви дізналися, як зручно створювати, запускати та протестувати проект NestJS у локальному середовищі macOS завдяки ServBay. Інтеграція Node.js, гнучке налаштування сайтів (зокрема зворотній проксі), підтримка кількох вбудованих баз даних значно спрощують локальну розробку та тестування додатків на NestJS. Насолоджуйтесь простим перемиканням між development і production-режимами, власними доменами, захищеними HTTPS, а також легким підключенням до потужних баз даних без додаткових складнощів!