Sản xuất tệp env Nodejs

Có nhiều giá trị không đổi cần được lưu trữ trong các ứng dụng và được truy xuất để sử dụng sau này, chẳng hạn như tên người dùng DB, mật khẩu DB, mật khẩu email và Khóa API. Các giá trị này có thể thay đổi trong các trường hợp khác nhau. Khi nhà phát triển viết một đoạn mã, mã đó cần được kiểm tra. Các thử nghiệm phải chống lại môi trường phát triển. Nhà phát triển không nên kết nối với máy chủ DB sản xuất

Nhà phát triển thường sử dụng cơ sở dữ liệu cục bộ để phát triển và thử nghiệm, tài khoản email cá nhân để gửi email kiểm tra. Đôi khi, trước khi triển khai sản xuất, ứng dụng sẽ chuyển sang môi trường chạy thử và được nhóm Đảm bảo chất lượng (QA) kiểm tra dựa trên môi trường chạy thử. Cuối cùng, trong môi trường sản xuất, tất cả các dịch vụ phải sẵn sàng để sản xuất. Vì lý do đó, chúng tôi cần duy trì hai hoặc nhiều môi trường trong khi tạo ứng dụng

Thật thuận tiện và thông thường để lưu trữ một số giá trị không đổi khác nhau trong quá trình thay đổi môi trường. Ứng dụng có thể được cấu hình để truy xuất các giá trị này dựa trên môi trường mà ứng dụng đang chạy trên đó

Biến môi trường

Các biến môi trường có thể được tạo ở cấp ứng dụng hoặc hệ thống

Cấp độ khác nhau

Các hệ điều hành như Windows và Linux quản lý các biến môi trường của riêng chúng. Nút. ứng dụng js có thể đọc các giá trị này từ hệ thống lưu trữ

Nhưng đợi đã. Điều gì sẽ xảy ra nếu nhà phát triển muốn đọc các giá trị này được lưu trữ cục bộ trong một tệp (ví dụ: tệp cấu hình)? . các ứng dụng js cũng có thể quản lý các biến môi trường của riêng chúng được lưu trữ trong một tệp (được gọi là tệp cấu hình trong hầu hết các ngôn ngữ lập trình khác). Nút. js không thể tự duy trì các biến môi trường cục bộ. Nó phải sử dụng một gói có tên là

npm i -S dotenv
1

dotenv đọc từ. env

Gói

npm i -S dotenv
1 có thể được cài đặt bằng lệnh NPM và nó đọc từ tệp có tên
npm i -S dotenv
3

Thiết lập một ứng dụng

Để hiểu toàn bộ khái niệm, chúng ta sẽ tạo một Nút. js chạy trên nhiều môi trường để chứng minh việc sử dụng gói nút

npm i -S dotenv
1 để duy trì các biến cục bộ và cũng thử triển khai trên máy chủ để đọc các biến hệ thống trong khi chạy trên máy chủ

Các bước thiết lập ứng dụng

  • Tạo gói. tập tin json
npm init -y
  • Cài đặt
    npm i -S dotenv
    1
npm i -S dotenv
  • Gọi chức năng cấu hình
    npm i -S dotenv
    1 trên đầu ứng dụng
require("dotenv").config();
  • Tạo tệp
    npm i -S dotenv
    3 trong thư mục gốc của ứng dụng với nội dung sau

tập tin env
  • Truy cập các giá trị bằng cách sử dụng
    npm i -S dotenv
    4
const DB_HOST = process.env.DB_HOST;
const DB_USER = process.env.DB_USER;

Bây giờ, nếu chúng ta chạy ứng dụng cục bộ, dotenv sẽ đọc các giá trị này từ. env và đính kèm với đối tượng

npm i -S dotenv
4. Nếu. env không tồn tại, nút. js cố gắng đọc các giá trị này từ các biến môi trường của máy

Ứng dụng dưới đây đọc các giá trị từ

npm i -S dotenv
3 và trả lại cho người dùng

nút hoàn chỉnh. máy chủ js

Triển khai trên Heroku

Chúng tôi sẽ triển khai ứng dụng trên Heroku và giải thích cách đọc các giá trị này từ các biến hệ thống

Có nhiều cách để triển khai ứng dụng trên Heroku. Chúng tôi sẽ sử dụng phương pháp GitHub

Yêu cầu

  • tài khoản Github
  • tài khoản heroku
  • Git được cài đặt trên máy đang hoạt động

Các bước triển khai

  1. Tạo tài khoản GitHub và tạo kho lưu trữ git mới

Kho lưu trữ mới

Tên của kho lưu trữ nên được điền trong trường hợp của chúng tôi, đó là env_demo. Nếu dự án là riêng tư, bạn cần chọn tùy chọn Riêng tư

github — kho lưu trữ mới

2. Chúng ta cần thực hiện một số thay đổi trong gói. json

  • thêm công cụ và chỉ định phiên bản nút — điều này là bắt buộc đối với Heroku để cài đặt nút cho ứng dụng
  • thêm tập lệnh bắt đầu
    npm i -S dotenv
    7, Heroku chạy
    npm i -S dotenv
    8 cho Node. ứng dụng js
________số 8

Ngoài ra, chúng ta cần chỉ định cổng để chạy ứng dụng trong chỉ mục. js như bên dưới. Điều này được yêu cầu bởi Heroku. Bạn không nên chỉ định cổng

http
.createServer(function (req, res) {
res.writeHead(200, { "Content-Type": "application/json" });
res.write(JSON.stringify(ENV_VARS));
res.end();
})
.listen(process.env.PORT);

3. Thêm một tệp có tên. gitignore, trong thư mục gốc của dự án. Chúng tôi có thể chỉ định các tệp không được tải lên máy chủ GitHub. Trong ví dụ của chúng tôi, chúng tôi không muốn thêm. env, vì nó chứa các chi tiết cá nhân của tôi và thư mục node_modules vì ​​nó không được khuyến nghị, Heroku tạo node_modules và tìm nạp các gói npm cần thiết

tập tin gitignore

4. Trong thư mục dự án trên máy của bạn, hãy viết các lệnh bên dưới

npm i -S dotenv
0

5. Truy cập Heroku và tạo một tài khoản

6. Tạo một ứng dụng mới

heroku — tạo ứng dụng mới

7. Chọn Kết nối với Github từ tab triển khai

heroku — kết nối với github

8. Tìm kho lưu trữ và chọn Kết nối, sau đó nhấp vào Triển khai nhánh. Sau khi triển khai xong, bấm vào nút Xem để xem ứng dụng trên trình duyệt

heroku — kết nối

heroku — triển khai nhánh

Bây giờ, ứng dụng sẽ mở và hiển thị một đối tượng JSON trống. Tại sao?

nút - đọc các biến env

Định cấu hình biến

  • Trong tab cài đặt, nhấp vào Reveal Config Vars

  • Thêm các biến ở đó

heroku — vars cấu hình
  • và thử nghiệm

Phần kết luận

Điều rất quan trọng trong phát triển ứng dụng là tách nhiều biến môi trường. Dễ dàng duy trì nhiều biến môi trường trong một Nút. js với việc sử dụng gói npm

npm i -S dotenv
1. Nó đọc từ một tệp có tên là
npm i -S dotenv
3. Trong khi một. tệp env không tồn tại, hãy xử lý. env cố đọc từ các biến môi trường máy

bạn có nên sử dụng. env trong sản xuất?

Sử dụng các biến môi trường là một phương pháp hơi phổ biến trong quá trình Phát triển nhưng thực tế không phải là một phương pháp lành mạnh để sử dụng với Sản xuất . Mặc dù có một số lý do giải thích cho điều này, nhưng một trong những lý do chính là việc sử dụng biến môi trường có thể gây ra sự tồn tại không mong muốn của các giá trị biến.

Làm cách nào để tạo tệp env trong nodejs?

Bạn có thể tạo một. env trong thư mục gốc của ứng dụng chứa các cặp khóa/giá trị xác định các biến môi trường bắt buộc của dự án . Thư viện dotenv đọc cái này. env và nối nó vào quá trình.

Làm cách nào để sử dụng env trong nodejs?

Cách sử dụng biến môi trường tùy chỉnh trong Nút .
Tạo ra một. tập tin env. .
Cài đặt thư viện dotenv. npm cài đặt dotenv
Yêu cầu dotenv càng sớm càng tốt (e. g. trong ứng dụng. .
Bất cứ nơi nào bạn cần sử dụng các biến môi trường (e. g. trong GitLab, trong Jenkins, trong Heroku,…) bạn cần thêm các biến môi trường của mình

Tôi có thể có nhiều. tập tin env?

Một giải pháp là có nhiều. các tệp env, mỗi tệp đại diện cho các môi trường khác nhau . Trong thực tế, điều này có nghĩa là bạn tạo một tệp cho từng môi trường của mình. .