Skip to main content

Command Palette

Search for a command to run...

Thiết lập configuration trong NestJs

Published
2 min read

Trong mỗi một project chúng ta đều cần thiết lập các configuration cho từng môi trường làm việc khác nhau test/dev/staging/prod.

Trong NestJS cũng đã cho chúng ta một hướng dẫn về việc setup configuration, tuy nhiên dự án công ty mình lại chọn cách sử dụng config module (thực sự mình cũng chưa tìm hiểu được lý do dùng config module thay vì sử dụng config default như NestJS hướng dẫn - sẽ update thêm sau)

Đầu tiên chúng ta cần install package cần thiết

npm i config dotenv --save

Tiếp theo, trong project root folder ta tạo ra một config folder để chứa các config file (ở đây mình chọn .yaml làm định dạng config file - chúng ta có thể sử dụng các định dạng khác như .json, .js đều được)

/config
  default.yaml
  prod.yaml
  staging.yaml
  dev.yaml
  test.yaml

Ví dụ nội dung của test.yaml

# NODE_ENV=test
server:
  port: 5000

mongodb:
  uri: mongodb://localhost:27017/db-name

Tiếp theo để ứng dụng có thể nhận biết được môi trường đang thực thi là môi trường nào để từ đó sẽ lấy config tương ứng thì ta cần tạo một file .env nằm trong project root folder với nội dung

NODE_ENV=test // thay thế test bằng dev/staging/prod cho các file config tương ứng khác
// Thực ra khi triển khai trên các môi trường thật thì chúng ta không cần file .env này
// mà chúng ta sẽ phải setup biến môi trường ở trong chính môi trường đó

** Lưu ý:

  • Các config sẽ được lấy tương ứng với nội dung config file
  • Nhưng nếu config cần lấy không có trong config file tương ứng thì nó sẽ tìm trong defaul.yaml

Tiếp theo chúng ta phải làm cho ứng dụng hiểu được file .env là file chứa biến môi trường bằng cách thêm đoạn code sau vào trên cùng filemain.ts

require('dotenv').config();

Cuối cùng để sử dụng các biến config ta sẽ phải import config module và sử dụng nó như ví dụ dưới đây

import * as config from 'config';

const port = config.get('server.port');
316 views

More from this blog

zujs

35 posts