Biến môi trường process.env trong Nodejs
Trong bài viết hôm này chúng ta sẽ cùng nhau đi tìm hiểu về biến môi trường process.env trong Nodejs, đây là một phần được sử dụng rất nhiều trong dự án Nodejs thực tế, bởi việc lưu trữ thông tin trong môi trường sẽ giúp cho quá trình làm việc cũng như deploy dự án dễ dàng hơn.
1. Biến môi trường process.env trong Node
Như mình đã đề cập đến ở phần trên thì proccess.env thường được dùng để lưu trữ các biến trong từng môi trường làm việc.
Ví dụ như lúc trên local bạn sử dụng port 3000 để chạy dự án, nhưng khi deloy trên thực tế thì bạn muốn dùng port 4000 chẳng hạn. Lúc này bạn chỉ cần thay đổi giá trị của port trong biến proccess.env. Biến process.env còn được dùng để lưu trữ các thông tin cần giữ bí mật trong quá trình phát triển ứng dụng như username, password của database,....
Tại sao không lưu trong các file .js
để tiện hơn ? Thêm vào process.env làm gì cho mất công ? Bởi khi bạn lưu trong biến môi trường tất cả các file javascript có thể lấy được giá trị của nó. Bạn chỉ cần chỉnh sửa các biến môi trường.
Bài viết này được đăng tại [free tuts .net]
Khi lưu các giá trị quan trọng như username, password của database thì khả năng bảo mật không cao khi push lên github chẳng hạn, bạn chỉ cần lưu các giá trị này trong file .env và ignore file này không push lên github.
Trong dự án thực tế, các đoạn mã nodejs cần phải chạy trên các môi trường khác nhau như (Dev, Test, Product), mỗi môi trường có các cấu hình khác nhau. Bởi vậy, nodejs cung cấp cho chúng ta cách thức để tùy chỉnh các biến giúp chạy trên các môi trường khác nhau đó.
Bạn có thể xem các biến môi trường có trong dự án bằng cách in ra các obecjt có trong biến proccess.env :
console.log(process.env)
Có thể thấy các biến môi trường có sẵn trong nodejs như trong hình:
2. Thêm biến môi trường trong NodeJS
Có 2 cách để thêm các biến môi trường vào trong dự án
Thêm bằng câu lệnh:
Khi chạy một file nodejs có thể sử dụng câu lệnh để thêm các biến môi trường vào, bạn chỉ cần thêm tên và giá trị của các biến này đăng sau tên file cần chạy theo dạng KEY=VALUE, các biến môi trường cách nhau bằng dấu cách. Chúng ta có file index.js
in ra giá trị của biến môi trường PORT
console.log(process.env.DB_USERNAME, process.env.DB_PWD) console.log('Port sử dụng là ' + process.env.PORT)
Để gán thêm giá trị vào biến môi trường, giả sư như trong ví dụ này mình sẽ giá trị của biến PORT trong biến môi trường là 3000 và biến DB_USERNAME, DB_PWD
. Mở terminal lên và gõ dòng lệnh :
node index.js PORT=3000 DB_USERNAME=freetuts DB_PWD=password
Lúc này bạn sẽ thấy biến môi trường sẽ được gán :
freetuts password Port sử dụng 3000
Cách này rất ít khi được sử dụng bởi thường các dự án có rất nhiều biến môi trường, khi truyền vào dòng lệnh rất khó để quản lí mà rất dài dòng. Trong dự án thực tế, người ta thường dùng cách thứ 2 đó là đưa nó vào trong file .env
Đưa biến môi trường vào trong file .env
Khi bạn có rất nhiều các biến môi trường bạn cần phải đưa nó vào file .env để dễ dàng sử dụng hơn. Trong thư mục chứa dự án bạn tạo một file có tên là .env trong đó chứa các biến môi trường, cách nhau bằng dấu xuống dòng.
Giả sử mình có file .env
như sau:
PORT=3000 DB_USERNAME=freetuts DB_PWD=password
Lúc này để lấy giá trị của biến môi trường bạn cần cài thêm một module có tên dotenv
bằng cách mở terminal và chạy:
npm install -g dotenv
Bây giờ bạn chỉ cần require module này vào dự án và module dotenv sẽ tự động lấy các giá trị trong file .env
và gán vào biến môi trường process.env để sử dụng. Mình có file index.js
như sau:
require('dotenv').config() console.log(process.env.DB_USERNAME, process.env.DB_PWD) console.log('Port sử dụng là ' + process.env.PORT)
Chạy file index.js
bằng cách mở terminal và gõ dòng lệnh:
node index.js
bạn sẽ nhận được kết quả tương tự như cách đầu tiên:
freetuts password Port sử dụng 3000
Trong bài này chúng ta đã cùng nhau đi tìm hiểu về cách sử dụng biến môi trường trong dụ án NodeJS, đây là kiến thức rất cơ bản về nó nhưng cũng hết sức quan trọng trong quá trình làm việc với dự án thực tế. Mong rằng bài viết sẽ giúp ích cho bạn.