Yanıtlar:
Bu işlevi isDevMode kullanabilirsiniz.
import { isDevMode } from '@angular/core';
...
export class AppComponent {
constructor() {
console.log(isDevMode());
}
}
Bir not : bu işlevi kullanırken dikkatli olun
if(isDevMode()) {
enableProdMode();
}
Alacaksın
Hata: Platform kurulumundan sonra üretim modu etkinleştirilemez
Çevre değişkeni
import { environment } from 'src/environments/environment';
if (environment.production) {
//
}
webpack process.env.NODE_ENV değişken tarafından enjekte edilir
declare let process: any;
const env = process.env.NODE_ENV;
if (env === 'production') {
//
}
platformBrowserDynamic().bootstrapModule(AppModule);
Https://angular.io/guide/deployment#enable-production-mode adresindeki Açısal Dağıtım kılavuzuna göre :
Üretim için derleme (veya --environment = prod bayrağının eklenmesi), üretim modunu etkinleştirir Bunun
main.ts
nasıl çalıştığını görmek için CLI tarafından oluşturulanlara bakın.
main.ts
şunlara sahiptir:
import { environment } from './environments/environment';
if (environment.production) {
enableProdMode();
}
Bu yüzden environment.production
üretimde olup olmadığınızı kontrol edin .
Büyük olasılıkla aramak istemezsiniz isDevMode()
. Https://angular.io/api/core/isDevMode adresindeki Angular API belgelerine göre :
Bir kez çağrıldıktan sonra, değer kilitlenir ve artık değişmez ... Varsayılan olarak, bir kullanıcı bunu çağırmadan önce enableProdMode'u çağırmadığı sürece bu doğrudur.
Aramaya saptadık isDevMode()
bir gelen ng build --prod
yapı her zaman doğru döner ve her zaman dev modunda çalışan içine kilitler. Bunun yerine, environment.production
üretimde olup olmadığınızı kontrol edin . Ardından üretim modunda kalacaksınız.
isDevMode()
bunu başarmanın mükemmel bir yoludur. söyledi.
mode
Angular'ı bilmek istiyorsanız , @yurzui'nin dediği gibi, aramanız gerekir, { isDevMode } from @angular/core
ancak false
yalnızca enableProdMode
ondan önce ararsanız geri dönebilir .
Derleme ortamını bilmek istiyorsanız , başka bir deyişle, uygulamanız küçültülmüşse veya çalışmıyorsa, derleme sisteminizde bir yapı değişkeni ayarlamanız gerekir ... Webpack
Örneğin kullanarak , bir göz atmalısınız definePlugin
.
https://webpack.github.io/docs/list-of-plugins.html#defineplugin
new webpack.DefinePlugin({
ENV_PRODUCTION: !!process.env.NODE_ENV
});
import { platformBrowserDynamic } from '@angular/platform-browser-dynamic'
import { enableProdMode } from '@angular/core';
import { AppModule } from './app.module'
platformBrowserDynamic().bootstrapModule(AppModule);
enableProdMode();
Bu benim kodumdu, bu yüzden aynı hatayı aldım. Sadece 3. ve 4. satırı değiştirdim. Sonra sorun çözüldü . Öyleyse bootstrapping modülünden önce --prod modunu etkinleştirmeliyiz.
Doğru olan bu şekilde konulabilir,
enableProdMode()
platformBrowserDynamic().bootstrapModule(AppModule);
isDevMode()
Fonksiyonun dönüş değerini kontrol ettiğinizden emin olmalısınız .
Kurulumum başarısız oldu çünkü var olup olmadığını kontrol ediyordum: if (isDevMode)
her zaman true
, hatta üretimdeydi çünkü ilan ettim import { isDevMode } from '@angular/core';
.
if (isDevMode())
false
doğru şekilde döndü .
ng build --prod=true
angular cli ile oluşturmaya çalışın
if ( isDevMode )
yalnızca tanımlayıcının isDevMode tanımlı olup olmadığını, null olmadığını ve boş veya sıfır olmadığını kontrol eder . Tanımlayıcı tanımlandı gibi @angular/core
o () eğer hep dönecektir gerçek . Şimdi, if( isDevMode() )
aslında işlevi çağıracak ve geliştirme ortamı olup olmadığı geri gelecektir.
Ortam dosyasında bulunan üretim değişkenini kontrol edin, üretim modu için doğru ve geliştirme için yanlış olacaktır.
import { environment } from 'src/environments/environment';
if (environment.production) {
// for production
} else {
// for development
}