Làm cách nào để đặt một biến môi trường trong node.js?


Câu trả lời:


139

Bạn có thể đặt các biến môi trường của mình trong process.env:

process.env['VARIABLE'] = 'value';

-HOẶC LÀ-

process.env.VARIABLE = 'value';

Node nên quan tâm đến các chi tiết cụ thể của nền tảng.


4
Tôi không nghĩ bạn cần phải làm var process = require('process'), process là một biến toàn cục hiện tại.
— alessioalex,

82
Tuy nhiên, lưu ý rằng điều này sẽ chỉ đặt biến trong quy trình nút của bạn và bất kỳ quy trình con nào mà nó gọi; chẳng hạn, nó sẽ không để biến được đặt trong shell khi quá trình nút thoát ra (việc thay đổi môi trường của một tiến trình mẹ rất phụ thuộc vào hệ thống và thậm chí không phải lúc nào cũng có thể thực hiện được).
— ebohlman

2
có ai đưa ra ý kiến ​​về process.env.variable so với global.variable không?
— Scott Silvi

3
process.env.VARIABLEkhông sao nếu tên biến là một hằng số đã biết, trong khi process.env['VARIABLE']hoạt động trong mọi trường hợp; câu hỏi ban đầu không nêu đủ chi tiết, vì vậy ví dụ linh hoạt hơn có vẻ phù hợp hơn.
— lanzz

3
@BillMorris không, nó không phải là có thể cho bất kỳ quá trình thay đổi môi trường mẹ của
— lanzz

2

Trước tiên, bạn nên cài đặt gói này: - https://github.com/motdotla/dotenv [ npm install dotenv]

Sau đó, bạn cần tạo tệp .env trong thư mục gốc của dự án và ở đó bạn có thể thêm các biến như dưới đây: -

NODE_ENV=PRODUCTION
DATABASE_HOST=localhost

Bây giờ bạn có thể dễ dàng truy cập các biến này trong mã của mình như sau: -

require('dotenv').config()
console.log(process.env.NODE_ENV);

Nó làm việc cho tôi, hy vọng rằng sẽ giúp.


1
Dotenv sử dụng tệp .env bảo mật như thế nào? Nếu các bí mật là văn bản thuần túy trong các chuỗi môi trường trong tệp .env, thì điều đó có an toàn hơn việc đặt chúng dưới dạng văn bản thuần túy trong mã nút của bạn không? Đó rõ ràng là một không?
— Ric

0

nút v14.2.0 Để đặt biến env, trước tiên hãy tạo một tên tệp config.env trong thư mục chính của dự án của bạn và sau đó viết tất cả các biến bạn cần, ví dụ:

config.env

NODE_ENV=development
PORT=3000
DATABASE=mongodb+srv://lord:<PASSWORD>@cluster0-eeev8.mongodb.net/tour-guide?retryWrites=true&w=majority
DATABASE_LOCAL=mongodb://localhost:27017/tours-test
DATABASE_PASSWORD=UDJUKXJSSJPWMxw

bây giờ hãy cài đặt dotenv từ npm, dotenv sẽ giảm tải công việc của bạn

npm i dotenv

bây giờ trong tập lệnh khởi động máy chủ của bạn, trong trường hợp của tôi là server.js sử dụng doenv để tải các biến env.

const dotenv = require('dotenv');
dotenv.config({ path: './config.env' });
const app = require('./app'); // must be after loading env vars using dotenv

//starting server
const port = process.env.PORT || 3000;
app.listen(port, () => {
  console.log(`app running on port ${port}...`);
});

Tôi đang sử dụng express, tất cả mã express của tôi trong app.js, viết ở đây để bạn tham khảo

const express = require('express');
const tourRouter = require('./route/tourRouter');
const userRouter = require('./route/userRouter');

if (process.env.NODE_ENV === 'development') {
  console.log('mode development');
}
app.use(express.json());

app.use('/api/v1/tours', tourRouter);
app.use('/api/v1/users', userRouter);

module.exports = app;

bây giờ khởi động máy chủ của bạn bằng giao diện điều khiển, tôi đang sử dụng gật đầu , bạn có thể cài đặt nó từ npm;

nodemon server.js
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookie và Chính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.