Untuk digunakan di lingkungan express.js. Ada saran?
javascript
node.js
macos
environment-variables
Mark Gia Bao Nguyen
sumber
sumber
Jawaban:
Sebelum menjalankan aplikasi Anda, Anda dapat melakukan ini di konsol,
Atau jika Anda berada di windows Anda dapat mencoba ini:
atau Anda dapat menjalankan aplikasi Anda seperti ini:
Anda juga dapat mengaturnya di file js Anda:
Tetapi saya tidak menyarankan untuk melakukannya di file runtime Anda, karena tidak mudah untuk membuka VIM di server Anda dan mengubahnya menjadi produksi. Anda dapat membuat file config.json di direktori Anda dan setiap kali aplikasi Anda berjalan, ia membaca dari situ dan mengatur konfigurasi.
sumber
process.env.NODE_ENV
andal dari aplikasi itu sendiri. Paling baik setel variabel lingkungan Anda dengan benar seperti yang ditautkan Daniel di bawah.NODE_ENV
secara eksplisit setiap kali Anda menjalankan aplikasi, seperti pada contoh kedua (NODE_ENV=production node app.js
). Dengan cara itu Anda berpotensi menyelamatkan diri dari beberapa penarik rambut di masa depan jika Anda lupa mengaturNODE_ENV
kembali ke daerah Andadevelopment
.cross-env NODE_ENV=production
bekerja di windows dan linux / mac.NODE_ENV=production forever app.js
harus bekerja.di package.json:
kemudian jalankan di terminal:
sumber
NODE_ENV=production
di package.json tidak masuk akal. Menjalankannpm start
dalam pengembangan akan menjalankannya dalam produksi. Anda mungkin menulis kode Anda seolah-olah itu selalu produksi, karena Anda selalu menjalankannya seperti itu. Salah satu alasan saya melihat hal ini adalah untuk memaksa modul lain (misalnya Express) untuk berjalan dalam mode produksi. Mengapa menggunakan variabel lingkungan sama sekali jika mereka tidak pernah berubah?Belum ada yang menyebutkan
.env
di sini? Buat.env
file di root aplikasi Anda, lalurequire('dotenv').config()
baca nilainya. Mudah diubah, mudah dibaca, lintas platform.https://www.npmjs.com/package/dotenv
sumber
"mode": "production"
dalam.env
file berhasil.export NODE_ENV=production
adalah solusi buruk, hilang setelah restart.jika Anda tidak ingin khawatir tentang variabel itu lagi - tambahkan ke file ini:
jangan gunakan sintaks ekspor, cukup tulis (di baris baru jika beberapa konten sudah ada di sana):
ini bekerja setelah restart. Anda tidak perlu memasukkan kembali ekspor NODE_ENV = perintah produksi lagi di mana saja dan cukup gunakan simpul dengan apa pun yang Anda inginkan - selamanya, pm2 ...
Untuk heroku:
yang sebenarnya default.
sumber
NODE_ENV=production gulp bundle-production-app
untuk bundel skrip siap produksi, di server NODE_ENV berada di lingkungan server dan di mesin dev itu tidak ada. Dalam beberapa mesin itu mimpi buruk jika tidak disetel dan Anda berharap untuk selalu mengaturnya . Dalam beberapa, Anda berharap tidak memilikinya, jadi Anda tidak menambahkan. Ngomong-ngomong, saat melakukan UI saya membuatnya jelas jika sedang dalam mode pengembangan sehingga Anda tidak pernah memiliki pertanyaan apakah itu hidup atau mati. Jika NODE_ENV adalah! == produksi ada di wajah Anda bahwa Anda berada dalam mode lain, jadi tidak ada mimpi buruk sama sekali. Semua jelas, semuanya baik./etc/environment
dan menjalankannyaexport NODE_ENV=production
?Untuk tidak perlu khawatir apakah Anda menjalankan skrip pada Windows, Mac atau Linux, instal paket cross-env . Maka Anda dapat menggunakan skrip Anda dengan mudah, seperti:
Alat peraga masif untuk pengembang paket ini.
sumber
sumber
NODE_ENV=production
sekarang menjadi default di Heroku node.js deploys.Untuk Windows Powershell gunakan perintah ini
sumber
Di OSX saya sarankan menambahkan
export NODE_ENV=development
ke~/.bash_profile
dan / atau~/.bashrc
dan / atau Anda~/.profile
.Secara pribadi saya menambahkan entri itu ke saya
~/.bashrc
dan kemudian~/.bash_profile
~/.profile
mengimpor konten file itu, sehingga konsisten di seluruh lingkungan.Setelah melakukan penambahan ini, pastikan untuk me-restart terminal Anda untuk mengambil pengaturan.
sumber
Jika Anda berada di windows. Buka cmd Anda di folder kanan lalu pertama
tekan enter maka Anda dapat memulai simpul Anda dengan
itu akan mulai dengan pengaturan env Anda
sumber
Jika Anda menggunakan webpack di aplikasi Anda, Anda bisa mengaturnya di sana, menggunakan
DefinePlugin
...Jadi di
plugin
bagian Anda , atur NODE_ENV keproduction
:sumber
Untuk memiliki beberapa lingkungan, Anda perlu semua jawaban sebelumnya (parameter NODE_ENV dan ekspor), tetapi saya menggunakan pendekatan yang sangat sederhana tanpa perlu menginstal apa pun. Di package.json Anda cukup letakkan skrip untuk setiap env yang Anda butuhkan, seperti ini:
Kemudian, untuk memulai aplikasi alih-alih menggunakan
npm start
gunakannpm run script-prod
.Dalam kode Anda dapat mengakses lingkungan saat ini
process.env.NODE_ENV
.Voila.
sumber
Windows CMD ->
set NODE_ENV=production
Windows Powershell ->
$env:NODE_ENV="production"
MAC ->
export NODE_ENV=production
sumber
Daniel memiliki jawaban yang fantastis yang merupakan pendekatan yang lebih baik untuk proses penyebaran yang tepat (diatur dan lupakan).
Bagi yang menggunakan express. Anda dapat menggunakan grunt-express-server yang juga fantastis. https://www.npmjs.org/package/grunt-express-server
sumber
Mungkin saja Anda membuat dua instance objek sekuel
misalnya: var con1 = new Sequelize (); var con2 = Sequelize baru ();
Selain itu kesalahan yang sama akan terjadi
sumber