Встановлення та налаштування
Кроки зі встановлення та налаштування
У цьому розділі ми розберемо, як встановити і налаштувати модуль nestjs-monobank, а також наведемо кілька прикладів, як підключити його до вашого додатка на NestJS.
Встановлення пакета
Для початку встановіть необхідні пакети. Використовуйте команду npm або yarn, щоб додати nestjs-monobank до вашого проєкту.
npm install nestjs-monobank
pnpm add nestjs-monobank
yarn add nestjs-monobank
bun add nestjs-monobank
Пакет nestjs-monobank містить усі необхідні залежності для роботи з Monobank у вашому додатку на NestJS.
Налаштування змінних оточення
Для коректної роботи модуля вам необхідно задати кілька змінних оточення.
MONOBANK_API_KEY=your_api_key
Де взяти ці дані?
API Key ви отримаєте у вашому кабінеті Monobank для бізнесу після підключення послуги Merchant API.
Переконайтесь, що цей ключ зберігається в таємниці та ніколи не публікується у відкритому доступі або у вашому репозиторії.
Без коректно вказаного MONOBANK_API_KEY модуль не зможе підключитись до сервісу Monobank.
Підключення модуля
Після встановлення пакета і налаштування змінних оточення, необхідно під'єднати модуль nestjs-monobank до вашого застосунку.
Синхронна конфігурація
Для базової синхронної конфігурації використовуйте метод forRoot() для ініціалізації модуля з вашими налаштуваннями.
import { Module } from '@nestjs/common'
import { MonobankModule } from 'nestjs-monobank'
@Module({
imports: [
MonobankModule.forRoot({
apiKey: 'MONOBANK_API_KEY'
})
]
})
export class AppModule {}
У цьому прикладі MonobankModule.forRoot() приймає об'єкт із налаштуваннями, який ви передаєте в конфігурацію модуля.
Асинхронна конфігурація
Якщо вам потрібно завантажувати параметри конфігурації з інших джерел або використовувати асинхронні операції для отримання значень, можна застосувати метод forRootAsync(). Цей підхід підходить для роботи з динамічно отримуваними значеннями конфігурації.
import { Module } from '@nestjs/common'
import { ConfigModule, ConfigService } from '@nestjs/config'
import { MonobankModule } from 'nestjs-monobank'
@Module({
imports: [
ConfigModule.forRoot(),
MonobankModule.forRootAsync({
imports: [ConfigModule],
useFactory: async (configService: ConfigService) => ({
apiKey: configService.getOrThrow('MONOBANK_API_KEY')
}),
inject: [ConfigService]
})
]
})
export class AppModule {}
У цьому прикладі useFactory дозволяє асинхронно отримати значення конфігурації з ConfigService. Це корисно, якщо ваші параметри конфігурації можуть змінюватися або завантажуються із зовнішнього джерела.
Винесена конфігурація
Для зручнішої роботи з конфігурацією можна винести налаштування в окремий файл. Наприклад, створіть файл monobank.config.ts:
// src/config/monobank.config.ts
import { ConfigService } from '@nestjs/config'
import type { MonobankOptions } from 'nestjs-monobank'
export function getMonobankConfig(
configService: ConfigService
): MonobankOptions {
return {
apiKey: configService.getOrThrow('MONOBANK_API_KEY')
}
}
Потім підключіть його в AppModule:
import { Module } from '@nestjs/common'
import { ConfigModule, ConfigService } from '@nestjs/config'
import { MonobankModule } from 'nestjs-monobank'
import { getMonobankConfig } from './config/monobank.config'
@Module({
imports: [
ConfigModule.forRoot(),
MonobankModule.forRootAsync({
imports: [ConfigModule],
useFactory: getMonobankConfig,
inject: [ConfigService]
})
]
})
export class AppModule {}
У цьому разі конфігурація зберігатиметься в окремому файлі, що покращує структуру і дає змогу легше керувати параметрами оточення.