Bagaimana cara mengatur variabel lingkungan di node.js?

93

Bagaimana cara mengatur variabel lingkungan di node.js?

Saya lebih suka tidak bergantung pada platform apa pun yang spesifik, seperti menjalankan ekspor atau set cmd.exe.

abrkn
sumber
Anda dapat membaca jawaban ini stackoverflow.com/a/57509175/11127383
Daniel Danielecki

Jawaban:

140

Anda dapat mengatur variabel lingkungan Anda di process.env:

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

-ATAU-

process.env.VARIABLE = 'value';

Node harus menangani spesifikasi platform.

lanzz
sumber
4
Saya tidak berpikir Anda perlu melakukannya var process = require('process'), proses adalah hadiah variabel global.
alessioalex
85
Perhatikan, bagaimanapun, bahwa ini hanya akan mengatur variabel dalam proses node Anda dan setiap proses anak yang dipanggilnya; ia tidak akan, misalnya, meninggalkan variabel yang disetel dalam shell ketika proses node keluar (mengubah lingkungan proses induk sangat bergantung pada sistem dan bahkan tidak selalu memungkinkan).
ebohlman
2
ada yang menawarkan pendapat tentang process.env.variable vs global.variable?
Scott Silvi
3
process.env.VARIABLEtidak apa-apa jika nama variabel adalah konstanta yang diketahui, sementara process.env['VARIABLE']berfungsi dalam kasus apa pun; pertanyaan asli tidak cukup menjelaskan secara rinci, jadi contoh yang lebih serbaguna tampaknya lebih cocok.
lanzz
3
@BillMorris tidak, tidak mungkin ada proses untuk mengubah lingkungan induknya
lanzz
3

Pertama, Anda harus menginstal paket ini: - https://github.com/motdotla/dotenv [ npm install dotenv]

Kemudian Anda perlu membuat file .env di direktori root proyek Anda, dan di sana Anda dapat menambahkan variabel seperti di bawah ini: -

NODE_ENV=PRODUCTION
DATABASE_HOST=localhost

Sekarang Anda dapat dengan mudah mengakses variabel-variabel ini dalam kode Anda seperti di bawah ini: -

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

Itu berhasil untuk saya, semoga itu membantu.

jagjeet.dll
sumber
1
Seberapa amankah file .env yang digunakan oleh dotenv? Jika rahasianya adalah teks biasa dalam string lingkungan di file .env, apakah itu lebih aman daripada menjadikannya sebagai teks biasa dalam kode node Anda? Yang jelas tidak-tidak?
Ric
0

node v14.2.0 Untuk menyetel variabel env terlebih dahulu buat nama file config.env di direktori utama proyek Anda, lalu tulis semua variabel yang Anda butuhkan, misalnya

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

sekarang instal dotenv dari npm, dotenv akan membongkar pekerjaan Anda

npm i dotenv

sekarang di skrip starter server Anda, dalam kasus saya itu adalah server.js gunakan doenv untuk memuat variabel 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}...`);
});

Saya menggunakan express, semua kode ekspres saya di app.js, menulis di sini untuk referensi Anda

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;

sekarang mulai server Anda menggunakan konsol, saya menggunakan nodemon , Anda dapat menginstalnya dari npm;

nodemon server.js
Tuan
sumber