Express.js ortamlarında kullanım için. Herhangi bir öneri?
Express.js ortamlarında kullanım için. Herhangi bir öneri?
Yanıtlar:
Uygulamanızı çalıştırmadan önce bunu konsolda yapabilirsiniz,
export NODE_ENV=production
Veya pencerelerde iseniz bunu deneyebilirsiniz:
SET NODE_ENV=production
veya uygulamanızı şu şekilde çalıştırabilirsiniz:
NODE_ENV=production node app.js
Ayrıca js dosyanızda da ayarlayabilirsiniz:
process.env.NODE_ENV = 'production';
Ancak bunu çalışma zamanı dosyanızda yapmanızı önermiyorum, çünkü sunucunuzda VIM'i açmak ve üretime değiştirmek kolay değildir. Dizininizde bir config.json dosyası oluşturabilirsiniz ve uygulamanız her çalıştığında dosyayı okur ve yapılandırmayı ayarlar.
process.env.NODE_ENV
Uygulamanın kendisinden güvenilir bir şekilde zor olacak . En iyi ortam değişkeninizi Daniel'in aşağıda bağlandığı gibi düzgün ayarlayın.
NODE_ENV
Uygulamayı her çalıştırdığınızda, ikinci örnekte olduğu gibi ( NODE_ENV=production node app.js
) açık bir şekilde ayarlama hayranıyım . Bu şekilde, yerel ayarlarınızı NODE_ENV
geri almayı unutmanız durumunda kendinizi gelecekteki bazı saç çekme işlemlerinden kurtarırsınız development
.
cross-env NODE_ENV=production
windows ve linux / mac üzerinde çalışır.
NODE_ENV=production forever app.js
çalışmalı.
package.json içinde:
{
...
"scripts": {
"start": "NODE_ENV=production node ./app"
}
...
}
sonra terminalde çalıştırın:
npm start
NODE_ENV=production
pek mantıklı değil. Koşu npm start
gelişiminde üretimde çalıştırmak olacaktır. Kodunuzu her zaman üretim gibi yazabilirsiniz, çünkü her zaman bu şekilde çalıştırırsınız. Bunu yapmamın bir nedeni, diğer modülleri (örn. Express) üretim modunda çalışmaya zorlamak olacaktır. Neden hiç değişmediyse neden ortam değişkenlerini kullanıyorsunuz?
.env
Burada henüz kimseden bahsedilmedi mi? .env
Uygulama kökünüzde bir dosya oluşturun require('dotenv').config()
ve değerleri okuyun. Kolayca değiştirilebilir, kolayca okunabilir, çapraz platform.
"mode": "production"
için .env
dosyada ayar çalıştı.
export NODE_ENV=production
kötü bir çözümdür, yeniden başlattıktan sonra kaybolur.
artık bu değişken hakkında endişelenmek istemiyorsanız - bu dosyaya ekleyin:
/etc/environment
dışa aktarma sözdizimini kullanmayın, sadece yazın (bazı içerikler zaten varsa yeni satırda):
NODE_ENV=production
yeniden başlattıktan sonra çalışır. Artık dışa aktarma NODE_ENV = üretim komutunu tekrar girmek zorunda kalmayacak ve sadece istediğiniz herhangi bir şeyle düğümü kullanmanız gerekmeyecek - sonsuza dek, pm2 ...
Heroku için:
heroku config:set NODE_ENV="production"
Bu aslında varsayılan.
NODE_ENV=production gulp bundle-production-app
üretim hazır komut dosyası paketlemek için kullanın , sunucu NODE_ENV sunucu ortamında ve dev makinede orada değil. Bazı makinelerde ayarlanmamışsa kabus olur ve her zaman ayarlanmasını beklersiniz . Bazılarında, buna sahip olmamayı beklersiniz, bu yüzden eklemezsiniz. Her neyse, UI'leri yaparken geliştirme modunda olup olmadığını açıklığa kavuşturuyorum, bu yüzden açık veya kapalı olup olmadığını asla sormayacaksınız. Eğer NODE_ENV! == üretim ise, başka bir modda olduğunuz yüzünüzdedir, bu yüzden kabus olmaz. Hepsi açık, hepsi iyi.
/etc/environment
ve kaçak export NODE_ENV=production
?
Komut dosyalarınızı Windows, Mac veya Linux üzerinde çalıştırıp çalıştırmadığınızı düşünmek zorunda kalmamak için çapraz env paketini yükleyin . Sonra komut dosyalarınızı kolayca kullanabilirsiniz, şöyle:
"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"
}
Bu paketin geliştiricilerine büyük destek.
npm install --save-dev cross-env
heroku config:set NODE_ENV="production"
NODE_ENV=production
şimdi Heroku node.js dağıtımlarında varsayılan değerdir.
Windows Powershell için bu komutu kullanın
$env:NODE_ENV="production" ; node app.js
OSX ben ekleyerek öneririm export NODE_ENV=development
senin için ~/.bash_profile
ve / veya ~/.bashrc
ve / veya ~/.profile
.
Şahsen bu girişi kendime ekliyorum ~/.bashrc
ve~/.bash_profile
~/.profile
o dosyanın içeriğini alma , bu yüzden ortamlar arasında tutarlı.
Bu eklemeleri yaptıktan sonra, ayarları almak için terminalinizi yeniden başlattığınızdan emin olun.
Pencerelerde iseniz. Cmd'nizi sağ klasörde açın, önce
set node_env={your env name here}
enter tuşuna basarsanız düğümünüzü
node app.js
env ayarınızla başlayacak
Birden fazla ortama sahip olmak için daha önce tüm cevaplara ihtiyacınız var (NODE_ENV parametresi ve dışa aktarma), ancak hiçbir şey yüklemeye gerek kalmadan çok basit bir yaklaşım kullanıyorum. Package.json dosyasında ihtiyacınız olan her env için bir betik koymanız yeterlidir:
...
"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"
}
...
Ardından, npm start
kullanımı kullanmak yerine uygulamayı başlatmak içinnpm run script-prod
.
Kodda şu anki ortama process.env.NODE_ENV
.
Voila.
Windows CMD -> set NODE_ENV=production
Windows Powershell -> $env:NODE_ENV="production"
MAC -> export NODE_ENV=production
Daniel'in doğru konuşlandırma (ayarla ve unut) süreci için daha iyi bir yaklaşım olan harika bir cevabı var.
Ekspres kullananlara. Ayrıca fantastik grunt-express-server kullanabilirsiniz. https://www.npmjs.org/package/grunt-express-server
İki örnekli nesne nesnesi örneği oluşturmuş olabilirsiniz
örneğin: var con1 = yeni Sequelize (); var con2 = yeni Sequelize ();
aynı hata oluşacak