Yanıtlar:
Windows'un güncel sürümleri Powershell'i varsayılan kabuk olarak kullanır, bu nedenle şunu kullanın:
$env:NODE_ENV="production"
Aşağıdaki @ jsalonen cevabı. CMD'deyseniz (artık korunmaz),
set NODE_ENV=production
Bu işlem, Node.js uygulamanızı çalıştırmak istediğiniz komut isteminde yürütülmelidir.
Yukarıdaki satır, komutu yürüttüğünüz komut istemi için NODE_ENV ortam değişkenini ayarlar.
Ortam değişkenlerini genel olarak tek komut isteminin ötesinde kalacak şekilde ayarlamak için, aracı Denetim Masası'ndaki Sistem'den (veya başlat menüsündeki arama kutusuna 'ortam' yazarak) bulabilirsiniz.
set NODE_ENV=production && node app
. Daha rahatlıkla yapılandırmak package.json
buna göre: "scripts": { "start": "set NODE_ENV=production && node app" }
.
echo %NODE_ENV%
geçerli değerini kontrol etmek için yazabilirsiniz .
cross-env
Ekibiniz karışık işletim sistemlerinde çalışıyorsa, bu sorunun kullanılmasının daha iyi bir çözüm olduğunu düşünüyorum . @MoOx'tan gelen cevap bu soruya cevap olarak benim seçimim olacaktır.
Sadece benzersiz bir sözdizimi, çapraz platform kullanarak ortam değişkenlerini tanımlamak için çok yardımcı olabilecek güzel bir Node.js paketi buldum.
https://www.npmjs.com/package/cross-env
Bunun gibi bir şey yazmanıza izin verir:
cross-env NODE_ENV=production my-command
Hangi oldukça uygun! Artık Windows veya Unix'e özgü komutlar yok!
PowerShell'de:
$env:NODE_ENV="production"
set NODE_ENV=production
Powershell'de benim için çalışmadı ama bu işe yaradı. Teşekkürler!
$env:NODE_ENV="development"; gulp runMytask
. Oradaki yarım sütuna dikkat edin. Yırtılma dosyası process.env.NODE_ENV üzerinde koşullu mantık kullanabilir. Ayarlamadığınız sürece tanımsız olacaktır.
cross-env NODE_ENV=production
env'nin ayarlanmasını gerektiren package.json öğesinden npm komutları çalıştırıyorsanız , seçenek gerçekten daha iyi bir çözümdür. $ Env: NODE_ENV seçeneğini kullandıktan sonra env setini dev / prod üzerinde bırakmak çok kolay
Windows'ta Node.js'yi başlatma çağrınızla aynı satırda parametreler ayarlayabiliyorsanız ideal olur. Aşağıdakilere dikkatlice bakın ve tam olarak belirtildiği gibi çalıştırın:
Bu iki seçeneğiniz var:
Komut satırında:
set NODE_ENV=production&&npm start
veya
set NODE_ENV=production&&node index.js
Windows üzerinde çalışması için hile "&&" önce ve sonra boşluk kaldırmak gerekir. Package.json dosyanızı aşağıdaki başlangıç_window'ları ile yapılandırın (aşağıya bakın). Sonra komut satırında "npm run start_windows" komutunu çalıştırın.
//package.json
"scripts": {
"start": "node index.js"
"start_windows": "set NODE_ENV=production&&node index.js"
}
Kullanabilirsiniz
npm run env NODE_ENV=production
Muhtemelen bunu yapmanın en iyi yoludur, çünkü hem Windows hem de Unix'te uyumludur.
Gönderen npm çalışma komut belgelerinde :
Env betiği, çalışma zamanında betiğin kullanabileceği ortam değişkenlerini listelemek için kullanılabilen özel bir yerleşik komuttur. Paketinizde bir "env" komutu tanımlanmışsa, yerleşik olandan öncelikli olacaktır.
npm run env NODE_ENV=production -- node -e 'console.log(process.env.NODE_ENV)'
--
node -e 'console.log(process.env.NODE_ENV)'
npm run env NODE_TLS_REJECT_UNAUTHORIZED=0 -- node --inspect ./etc/http-req-standalone.js
ve ... hiçbir şey olmadı. Bu yöntemin pencerelerde çalıştığından emin değilim.
NTVS ile Visual Studio kullanıyorsanız, proje özellikleri sayfasındaki ortam değişkenlerini ayarlayabilirsiniz:
Gördüğünüz gibi, Yapılandırma ve Platform açılır listeleri devre dışı bırakıldı (bunun nedenine çok fazla bakmadım), ancak .njsproj
dosyanızı aşağıdaki gibi düzenlerseniz :
<PropertyGroup Condition=" '$(Configuration)' == 'Debug' ">
<DebugSymbols>true</DebugSymbols>
<Environment>NODE_ENV=development</Environment>
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)' == 'Release' ">
<DebugSymbols>true</DebugSymbols>
<Environment>NODE_ENV=production</Environment>
</PropertyGroup>
'Hata Ayıkla / Bırak' açılır menüsü, Node.js'yi başlatmadan önce değişkenin nasıl ayarlanacağını kontrol eder.
Komutunuzu * nix'de olduğu gibi çalıştırabileceğiniz bir win-node-env modülü yazdım .
NODE_ENV=production node myapp/app.js
Bir oluşturarak çalışır NODE_ENV.cmd
belirlediğini NODE_ENV
ortam değişkeni ve yumurtlar komuta ve args geri kalanı ile bir çocuk süreç.
Sadece yükleyin (global olarak) ve npm script komutlarınızı çalıştırın, otomatik olarak çalışmasını sağlamalıdır.
npm install -g win-node-env
Visual Studio 2013'te Windows 7 64 bit üzerinde Node.js kullanma deneyimim,
setx NODE_ENV development
cmd penceresinden. VE yeni değerin tanınabilmesi için Visual Studio'yu yeniden başlatmanız gerekir.
Ayarlanan sözdizimi yalnızca ayarlandığı cmd penceresinin süresi boyunca devam eder.
Node.js'de basit test:
console.log('process.env.NODE_ENV = ' + process.env.NODE_ENV);
Set kullanırken 'undefined' döndürür ve setx kullanılırken ve Visual Studio yeniden başlatılırsa 'development' döndürür.
cmd
- Powershell değil mi? Ugh, pencerelere gel, bir araya getir.
Komut olmayan satır yöntemi şöyledir:
Windows 7 veya 10'da, başlat menüsü arama kutusuna ortam yazın ve Sistem ortamı değişkenlerini düzenle'yi seçin.
Alternatif olarak, Denetim Masası \ Sistem ve Güvenlik \ Sistem'e gidin ve Gelişmiş sistem ayarları'nı tıklayın.
Bu, Gelişmiş sekmesi seçili olarak Sistem özellikleri iletişim kutusunu açmalıdır. En altta bir Ortam Değişkenleri ... düğmesi göreceksiniz. Buna tıkla.
Ortam Değişkenleri İletişim Kutusu açılacaktır.
Altta, Sistem değişkenleri altında Yeni ... seçeneğini belirleyin. Bu, Yeni Sistem Değişkeni iletişim kutusunu açar.
Değişken adını ve değerini girin ve Tamam'ı tıklatın.
Yeni değişkenin işlenebilmesi için tüm cmd istemlerini kapatmanız ve sunucunuzu yeniden başlatmanız gerekir. Hala görünmüyorsa, makinenizi yeniden başlatın.
Sadece açıklığa kavuşturmak için ve saçlarını çeken herkes için ...
Windows'ta git bash kullanıyorsanız , set node_env=production&& node whatever.js
çalışmıyor gibi görünüyor . Bunun yerine, yerel cmd'yi kullanın. Ardından, set node_env=production&& node whatever.js
beklendiği gibi çalışır.
Kullanım durumum:
Windows'ta geliştiriyorum çünkü iş akışım çok daha hızlı, ancak uygulamamın geliştirmeye özgü ara katman yazılımının üretim ortamında çalışmadığından emin olmam gerekiyordu.
Uygulamanızı PowerShell'de çalıştırmak için ( &&
izin verilmediğinden):
($env:NODE_ENV="production") -and (node myapp/app.js)
Sunucunun yaptığı şeyin metin çıktısının bastırıldığına dikkat edin ve bunun düzeltilebilir olup olmadığından emin değilim. (@ Jsalonen cevabını genişleterek.)
"debug-windows": "($env:NODE_ENV=\"dev\") -and (node src/dequeue.js)"
İçin birden ortam değişkenleri, bir .env
dosya daha uygundur:
# .env.example, committed to repo
DB_HOST=localhost
DB_USER=root
DB_PASS=s1mpl3
# .env, private, .gitignore it
DB_HOST=real-hostname.example.com
DB_USER=real-user-name
DB_PASS=REAL_PASSWORD
İle kullanımı kolaydır dotenv-safe
:
npm install --save dotenv-safe
.index.js
) ve doğrudan process.env
komutla kullanın :require('dotenv').load()
console.log(process.env.DB_HOST)
VCS'nizdeki dosyayı görmezden gelmeyi.env
unutmayın .
Daha sonra, "tanımlanmış" bir değişken .env.example
ya bir ortam değişkeni olarak ayarlanmamışsa, programınız hızlı bir şekilde başarısız olur .env
.
GITBASH terminalini kullanmıyorsanız
"set NODE_ENV=production"
, ne yapabilirsiniz "export"NODE_ENV=production"
bu bir değişken belirlemez, ancak birçok durumda yararlıdır. Bunu üretim için kullanmanızı tavsiye etmeyeceğim, ancak npm ile oynuyorsanız sorun olmamalı.
npm install --production
"&&" olmadan gulp görevi yürütmek için npm betiği kullandım
NODE_ENV = testcases npm run seed-db
NODE_ENV veya başka bir ortam değişkeni doğru değer sağlamıyorsa VS kodunu yeniden başlatın. Bu, yeniden başlattıktan sonra çalışmalıdır.