Untuk digunakan di lingkungan express.js. Ada saran?
Untuk digunakan di lingkungan express.js. Ada saran?
Jawaban:
Sebelum menjalankan aplikasi Anda, Anda dapat melakukan ini di konsol,
export NODE_ENV=production
Atau jika Anda berada di windows Anda dapat mencoba ini:
SET NODE_ENV=production
atau Anda dapat menjalankan aplikasi Anda seperti ini:
NODE_ENV=production node app.js
Anda juga dapat mengaturnya di file js Anda:
process.env.NODE_ENV = 'production';
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.
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 mengatur NODE_ENV
kembali ke daerah Anda development
.
cross-env NODE_ENV=production
bekerja di windows dan linux / mac.
NODE_ENV=production forever app.js
harus bekerja.
di package.json:
{
...
"scripts": {
"start": "NODE_ENV=production node ./app"
}
...
}
kemudian jalankan di terminal:
npm start
NODE_ENV=production
di package.json tidak masuk akal. Menjalankan npm 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, lalu require('dotenv').config()
baca nilainya. Mudah diubah, mudah dibaca, lintas platform.
"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:
/etc/environment
jangan gunakan sintaks ekspor, cukup tulis (di baris baru jika beberapa konten sudah ada di sana):
NODE_ENV=production
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:
heroku config:set NODE_ENV="production"
yang sebenarnya default.
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 menjalankannya export 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:
"scripts": {
"start-dev": "cross-env NODE_ENV=development nodemon --exec babel-node -- src/index.js",
"start-prod": "cross-env NODE_ENV=production nodemon --exec babel-node -- src/index.js"
}
Alat peraga masif untuk pengembang paket ini.
npm install --save-dev cross-env
heroku config:set NODE_ENV="production"
NODE_ENV=production
sekarang menjadi default di Heroku node.js deploys.
Untuk Windows Powershell gunakan perintah ini
$env:NODE_ENV="production" ; node app.js
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.
Jika Anda berada di windows. Buka cmd Anda di folder kanan lalu pertama
set node_env={your env name here}
tekan enter maka Anda dapat memulai simpul Anda dengan
node app.js
itu akan mulai dengan pengaturan env Anda
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:
...
"scripts": {
"start-dev": "export NODE_ENV=dev && ts-node-dev --respawn --transpileOnly ./src/app.ts",
"start-prod": "export NODE_ENV=prod && ts-node-dev --respawn --transpileOnly ./src/app.ts"
}
...
Kemudian, untuk memulai aplikasi alih-alih menggunakan npm start
gunakan npm run script-prod
.
Dalam kode Anda dapat mengakses lingkungan saat ini process.env.NODE_ENV
.
Voila.
Windows CMD -> set NODE_ENV=production
Windows Powershell -> $env:NODE_ENV="production"
MAC -> export NODE_ENV=production
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
Mungkin saja Anda membuat dua instance objek sekuel
misalnya: var con1 = new Sequelize (); var con2 = Sequelize baru ();
Selain itu kesalahan yang sama akan terjadi