Node.js mới nhất cho phép sử dụng .env hoàn hảo nhất trong ứng dụng (Store config in the environment)

Nội dung bài viết

Video học lập trình mỗi ngày

Ứng dụng đôi khi lưu trữ các biến môi trường (environment) dưới dạng constant trong code của team. Điều đó dễ hiểu vì sao .env phải nghiêm ngặt về sự tách biệt giữa code và environment.

Với phiên bản 20.6.0 được phát hành gần đây , Node.js hiện đã tích hợp sẵn tính năng hỗ trợ cho .envcác tệp. Giờ đây, bạn có thể tải các biến môi trường từ một .envtệp process.envvào ứng dụng Node.js của mình hoàn toàn không cần phụ thuộc vào một require nào nữa. Việc tải một .envtập tin giờ đây đơn giản như sau:

node --env-file .env

Nhưng trước tiên nếu bạn là dev mới thì nên hiểu vì sao phải sử dụng .env

.env là gì? Sao lại tách biệt

Để đơn giản hiểu câu nói trên thì như thế này. Code thì không thay đổi trong các lần deploy (dev, product, test..), nhưng các lần triển khai thì cấu hình thay đổi đáng kể.

Vì vậy 12 nguyên tắc thiết kế ứng dụng cũng nói về khía cạnh này. Vậy sử dụng sao cho hợp lý thì đọc thêm phần dưới đây.

Nhớ 3 cách upgrade node.js version trước khi đọc tiếp...

Sử dụng .env với 3 cách

Trước đây lập trình viên sử dụng nodejs thì sẽ có những cách sau để triển khai .env và lấy các tham số như.

~ BLOG=anonystick.com YOUTUBE=tipsjavascript node test.js

Thì trong code. sẽ output:

console.log(process.env.BLOG,  process.env.YOUTUBE)
// anonystick.com tipsjavascript

Nhược điểm nếu nhiều tham số thì sao, lúc đó cần một thư viên npm đó là dotenv. Thì sử dụng như sau, đương phiên phải tạo file .env. Có nhiều trường hợp rất phức tạp, nên xem tại Node.js backend Ecommerce.

require('dotenv').config()
console.log(process.env.BLOG,  process.env.YOUTUBE)
// anonystick.com tipsjavascript

Nhưng giờ đây với phiên bản 20.6.0 được phát hành gần đây , Node.js hiện đã tích hợp sẵn tính năng hỗ trợ cho .envcác file thì chỉ cần như sau.

node --env-file .env test.js

Tôi đã chờ tính năng này rất lâu của Node.js ... Vậy thôi. À nếu nhiều file .env. Ví dụ chúng ta có dự án

.env
.env.development
.env.test

Thì sao, thì hãy xem video này

Có thể bạn đã bị missing