Baca variabel lingkungan di Node.js


Jawaban:


1879
process.env.ENV_VARIABLE

Di mana ENV_VARIABLEnama variabel yang ingin Anda akses.

Lihat Node.js docs untukprocess.env .


4
Perhatikan bahwa ini tidak akan terlihat di luar proses simpul dan prosesnya. Misalnya itu tidak akan terlihat jika Anda menembak envdi jendela shell lain saat proses node sedang berjalan, atau di shell yang sama setelah proses node keluar.
Marko Bonaci

17
ini juga berfungsi untuk menetapkan variabel. process.env.FOO = "foo";bekerja.
ayam

16
Perlu disebutkan bahwa ini tidak berfungsi dalam aplikasi Bereaksi. process.envdisanitasi untuk alasan keamanan. Hanya variabel yang memulai dengan REACT_ENV_yang tersedia. Lihat: github.com/facebookincubator/create-react-app/blob/master/…
Mark Edington

7
@ MarkEdington, saya pikir seharusnyaREACT_APP_
Tn. 14

5
@ Mr.14 Benar sekali! Ini REACT_APP_ bukan REACT_ENV_
Mark Edington

133

Ketika menggunakan Node.js , Anda dapat mengambil variabel lingkungan dengan kunci dari process.envobjek:

sebagai contoh

var mode   = process.env.NODE_ENV;
var apiKey = process.env.apiKey; // '42348901293989849243'

Inilah jawaban yang akan menjelaskan pengaturan variabel lingkungan di node.js


Lib apa yang diperlukan untuk menggunakan metode process.env di atas?
user_mda

3
@user_mda process.envdibangun ke api node.js.
Jason Axelson

Apakah saya hanya mengatur apa pun yang saya inginkan pada process.env? mengapa orang mengaturnya di sana sebagai lawan untuk mengatakan, objek konfigurasi yang memerlukan () ed oleh node.js?
PDN

3
process.env memberi Anda akses ke variabel lingkungan yang ditetapkan pada tingkat sistem operasi. Ini dapat diatur dengan berbagai cara dan akan tergantung pada di mana Anda menyebarkan aplikasi Anda Misalnya, saya sering menjalankan aplikasi lokal saya menggunakan NODE_ENV = pengembangan NODE_PATH = lib node server.js. Kemudian process.env.NODE_PATH akan mengembalikan 'lib'
NectarSoft

57

Jika Anda ingin menggunakan kunci string yang dihasilkan dalam program Node.js Anda, katakanlah var v = 'HOME', Anda dapat menggunakan process.env[v].

Kalau tidak, process.env.VARNAMEharus di-hardcode di program Anda.


Mengapa Anda memiliki process.env['HOME']?
AlgoRythm

35

Untuk mengambil variabel lingkungan di Node.JS Anda dapat menggunakan process.env.VARIABLE_NAME , tetapi jangan lupa bahwa menempatkan properti di process.env akan secara implisit mengkonversi nilai menjadi string.

Hindari Boolean Logic

Bahkan jika file .env Anda mendefinisikan variabel seperti SHOULD_SEND = false atau SHOULD_SEND = 0 , nilai-nilai akan dikonversi ke string ( masing-masing "false" dan "0" ) dan tidak diartikan sebagai boolean.

if (process.env.SHOULD_SEND) {
 mailer.send();
} else {
  console.log("this won't be reached with values like false and 0");
}

Sebagai gantinya, Anda harus melakukan pemeriksaan eksplisit. Saya telah menemukan tergantung pada nama lingkungannya.

 db.connect({
  debug: process.env.NODE_ENV === 'development'
 });

1
Saya suka menggunakan 'ya' dan 'tidak' untuk boolean env vars yang harus diperiksa secara eksplisit. Ini menghindari masalah dalam banyak bahasa pemrograman.
Dogweather

22

Anda dapat menggunakan paket env untuk mengelola variabel lingkungan Anda per proyek:

  • Buat .envfile di bawah direktori proyek dan letakkan semua variabel Anda di sana.
  • Tambahkan baris ini di bagian atas file entri aplikasi Anda:
    require('dotenv').config();

Selesai Sekarang Anda dapat mengakses variabel lingkungan Anda process.env.ENV_NAME.


9
Paket dotenv berguna, tetapi pertanyaan yang diajukan dijawab dengan membaca process.env.ENV_VARIABLE. Paket dovenv adalah tentang memuat pengaturan dari file ke lingkungan.
Robert Patterson

Itulah poin saya: kelola dan muat variabel env dari envperpustakaan.
Huy Vo

1
Anda dapat melakukan hal yang sama dengan cara non-node.js-spesifik menggunakan envdirutilitas.
Chris Johnson

Mirip dengan github.com/bitrise-io/envman yang juga tidak nodespesifik.
MarkHu

1
kamu membuat hariku! Terima kasih banyak!
Vaha

0

Mengapa tidak menggunakannya di direktori Users di .bash_profilefile, jadi Anda tidak perlu mendorong file apa pun dengan variabel Anda ke produksi?

Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.