Đã đăng vào thg 11 22, 2019 4:15 SA 2 phút đọc
1. Mở đầu:
Nếu bạn quan tâm đến việc làm cho ứng dụng của bạn chạy trên bất kỳ máy tính hoặc cloud computing nào , thì bạn nên sử dụng Environment Variables để setting các giá trị cho từng môi trường mà bạn mong muốn. Dưới đây là một số ví dụ cụ thể về các tình huống phổ biến khi bạn nên xem xét sử dụng các biến môi trường.
HTTP port to listen on
Đường dẫn và thư mục tệp của bạn
Chỉ định vào các môi trường development, staging, test, or production database
Các ví dụ khác có thể là URL tới server resources
Hãy cùng khám phá cách bạn có thể sử dụng các biến môi trường trong mã Node.js.
2. Create file .env:
Đầu tiên chúng ta tạo một file .env ở thư mục dự án của các bạn với nội dung là các Environment Variables mà các bạn cần sử dụng như
NODE_ENV=development
MONGODB_URI=mongodb://localhost/demodatabase
SECRETKEY=SecretGarden
PORT=3000
3. Reading the .env File :
Khi chúng ta đã có file .env rồi thì giờ chúng ta sẽ nghĩ tới việc làm sao để đọc các Environment Variables trong file .env đó.Vậy các bước như sau:
- Tạo a package.json file
- Install the dotenv npm package
- Viết code để đọc the .env
4.Tạo a package.json file:
Hãy thử điều này bằng cách chạy lệnh sau
npm init -y
Điều này tạo ra một tệp package.json với các cài đặt cơ bản được điền cho bạn.
5. Install the dotenv npm package:
Bạn muốn đọc tệp .env và gói dotenv trên npm thực hiện điều này rất tốt. Cài đặt gói dotenv bằng cách chạy lệnh sau
npm install dotenv
Điều này sẽ thêm gói dotenv và các tệp của nó vào thư mục node_modules của bạn và tạo một mục trong package.json cho dotenv.
6. Viết code để đọc the .env:
Đầu tiên ta cần import dotenv vào file app.js chẳng hạn
require['dotenv'].config[];
Từ đây chúng ta có thể sử dụng các biến trong file .env mà chúng ta có đã tạo từ đầu bài viết, với code như sau :
let server = app.listen[process.env.PORT || 3000, function [] {
logger.api.info[`Server listening on port ${server.address[].port}`];
console.log[`Server listening on port ${server.address[].port}`];
}];
"process.env.PORT" là đoạn code để chúng ta đọc giá trị của Environment Variables PORT trong .env file
7. Lưu ý:
Để nội dung của .env file không bị thay đổi giữa các môi trường khi update .env file thì bạn sử dụng .gitignore file để quy định việc này, bằng việc thêm .env file vào danh sách ignore
All rights reserved
Khi nhắc đến thuật ngữ “Environment Variable” là nghĩ ngay tới việc thiết đặt biến này cho thư mục Java Home trong windows
Trong Node, biến Environment là một biến global, thường được sử dụng để chỉ định process
nào muốn chạy. Ví dụ, khi chạy một ứng dụng web, ta sẽ có các biến Environment sau:
- Port
- Database connection string
Nếu đã từng làm việc với .Net, chắc sẽ biết tới file web.config
. Biến Environment làm
việc i như các thiết đặt trong web.config
Set giá trị bằng terminal
Thí dụ ta set giá trị của PORT
PORT=6060 NODE_ENV=production webpack
Giờ lúc code, ta gọi cái biến này ra bằng cách
var port = process.env.PORT
Không
phải lúc nào set giá trị của biến env
bằng terminal, ví dụ connection string thì không ai đưa vào bằng terminal
PORT=65534 DB_CONN="mongodb://react-cosmos-db:swQOhAsVjfHx3Q9VXh29T9U8xQNVGQ78lEQaL6yMNq3rOSA1WhUXHTOcmDf38Q8rg14NHtQLcUuMA==@react-cosmos-db.documents.azure.com:19373/?ssl=true&replicaSet=globaldb" SECRET_KEY=b6264fca-8adf-457f-a94f-5a4b0d1ca2b9
Set giá trị bằng file .env
Tạo ra một cái file .env
trong cùng thư mục project, khai báo mớ biến environment ở đây
PORT=65534
DB_CONN="mongodb://react-cosmos-db:swQOhAsVjfHx3Q9VXh29T9U8xQNVGQ78lEQaL6yMNq3rOSA1WhUXHTOcmDf38Q8rg14NHtQLcUuMA==@react-cosmos-db.documents.azure.com:10255/?ssl=true&replicaSet=globaldb"
SECRET_KEY="b6264fca-8adf-457f-a94f-5a4b0d1ca2b9"
Để đọc được giá trị này, có rất nhiều cách, mà cách nào thì cũng phải cái thêm package!, dùng package dễ nhất là dotenv
npm install dotenv --save
Việc sử dụng hết sức đơn giản như sau
require['dotenv'].config[];
var MongoClient = require['môngdb'].MongoClient;
MongoClient.connect[process.env.DB_CONN, function[err, db] {
if[!err] {
console.log["We are connected"];
}
}];
Lưu ý đừng check in file
.env
này lên github, nếu checkin lên Github sẽ báo ngay tới email là việc làm này hết sức nguy hại tới sự ‘riêng tư’!
Extension của VSCode
Nếu đang dùng VSCode, một số extension này sẽ hữu ích
DotENV extension: mang màu sắc đến với cuộc sống