Saya mencoba mengikuti tutorial tentang NodeJs. Saya tidak berpikir saya melewatkan sesuatu tetapi setiap kali saya memanggil satu process.env.NODE_ENV
-satunya nilai yang saya dapatkan tidak terdefinisi. Menurut penelitian saya, nilai standarnya adalah 'pengembangan'. Bagaimana nilai ini ditetapkan secara dinamis dan di mana awalnya ditetapkan?
javascript
node.js
basheps
sumber
sumber
heroku config:set NODE_ENV="production"
Jawaban:
process.env adalah referensi ke lingkungan Anda, jadi Anda harus mengatur variabel di sana.
Untuk mengatur variabel lingkungan di Windows :
pada OS X atau Linux :
sumber
export NODE_ENV=development
di terminal Mac saya sebelum melakukanreact-native run-ios
dari terminal yang sama. Saat debugging, nilaiprocess.env.NODE_ENV
tidak terdefinisi.tips
di
package.json
:di
app.js
:jadi, ini mungkin lebih baik:
atau
sumber
"start": "set NODE_ENV=dev&& node app.js"
console.log(process.env.NODE_ENV.length)
// 4 (termasuk spasi di akhir)console.log(('' + process.env.NODE_ENV).trim() === 'dev') // true
karena tidak akan menimbulkan kesalahan bahkan jika process.env.NODE_ENV tidak terdefinisi.Untuk orang-orang yang menggunakan * nix (Linux, OS X, dll.), Tidak ada alasan untuk melakukannya melalui perintah ekspor kedua, Anda dapat mengaitkannya sebagai bagian dari perintah pemanggilan:
Lebih mudah, bukan? :)
sumber
Kami mengalami masalah ini ketika bekerja dengan node di Windows.
Alih-alih mengharuskan siapa pun yang mencoba menjalankan aplikasi untuk mengatur variabel-variabel ini, kami memberikan mundur dalam aplikasi.
Dalam lingkungan produksi, kami akan mendefinisikannya per metode biasa (SET / ekspor).
sumber
Anda dapat menggunakan paket cross-env npm. Ini akan menangani pemangkasan variabel lingkungan, dan juga akan memastikan itu berfungsi di berbagai platform.
Di root proyek, jalankan:
Kemudian di package.json Anda, di bawah skrip, tambahkan:
Kemudian di terminal Anda, di root proyek, mulai aplikasi Anda dengan menjalankan:
Variabel lingkungan kemudian akan tersedia di aplikasi Anda
process.env.NODE_ENV
, sehingga Anda dapat melakukan sesuatu seperti:sumber
di package.json kita harus mengkonfigurasi seperti di bawah ini (berfungsi di Linux dan Mac OS)
yang penting adalah "ekspor NODE_ENV = produksi" setelah perintah build Anda di bawah ini adalah contoh:
untuk lingkungan dev, kita harus menekan perintah "npm run dev"
untuk lingkungan produksi, kita harus menekan perintah "npm run start"
sumber
Di macOS bagi mereka yang menggunakan versi ekspres
4.x.x
dan menggunakanDOTENV
plugin, perlu menggunakan seperti ini:Setelah menginstal impor plugin seperti berikut ini di file tempat Anda init aplikasi:
require('dotenv').config({path: path.resolve(__dirname+'/.env')});
Di direktori root buat file '.env' dan tambahkan yang dapat divariabel seperti:
NODE_ENV=development
atauNODE_ENV = development
sumber
Di UBUNTU gunakan:
$ export NODE_ENV = tes
sumber
Ini karena OS
Di package.json Anda, pastikan memiliki skrip Anda (Di mana app.js adalah file js utama Anda yang akan dieksekusi & NODE_ENV dideklarasikan dalam file .env) .Eg:
Untuk windows
Juga atur variabel file .env Anda dengan NODE_ENV = pengembangan
Jika file .env Anda ada di folder untuk folder eg.config pastikan untuk menentukan di app.js (file js utama Anda)
const dotenv = membutuhkan ('dotenv'); dotenv.config ({path: './config/config.env'});
sumber
Jika Anda menghadapi masalah ini di Bereaksi, Anda perlu [email protected] dan lebih tinggi. Juga untuk variabel lingkungan lain selain
NODE_ENV
bekerja di Bereaksi, mereka harus diawali denganREACT_APP_
.sumber
Sedini mungkin dalam aplikasi Anda, minta dan konfigurasikan dotenv.
require('dotenv').config()
sumber
Anda juga dapat mengaturnya dengan kode, misalnya:
process.env.NODE_ENV = 'test';
sumber