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.tsnası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 --prodyapı 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.
modeAngular'ı bilmek istiyorsanız , @yurzui'nin dediği gibi, aramanız gerekir, { isDevMode } from @angular/coreancak falseyalnızca enableProdModeondan ö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())falsedoğru şekilde döndü .
ng build --prod=trueangular 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/coreo () 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
}