Jawaban:
Anda dapat menggunakan fungsi ini isDevMode
import { isDevMode } from '@angular/core';
...
export class AppComponent {
constructor() {
console.log(isDevMode());
}
}
Satu catatan : hati - hati dengan fungsi ini
if(isDevMode()) {
enableProdMode();
}
Kamu akan mendapatkan
Kesalahan: Tidak dapat mengaktifkan mode prod setelah pengaturan platform
variabel lingkungan
import { environment } from 'src/environments/environment';
if (environment.production) {
//
}
disuntikkan oleh variabel webpack process.env.NODE_ENV
declare let process: any;
const env = process.env.NODE_ENV;
if (env === 'production') {
//
}
platformBrowserDynamic().bootstrapModule(AppModule);
Per panduan Penerapan Angular di https://angular.io/guide/deployment#enable-production-mode :
Membangun untuk produksi (atau menambahkan flag --environment = prod) memungkinkan mode produksi Lihatlah CLI yang dihasilkan
main.ts
untuk melihat bagaimana ini bekerja.
main.ts
memiliki yang berikut:
import { environment } from './environments/environment';
if (environment.production) {
enableProdMode();
}
Jadi periksa environment.production
untuk melihat apakah Anda sedang dalam produksi.
Kemungkinan besar Anda TIDAK ingin menelepon isDevMode()
. Per dokumentasi API Sudut di https://angular.io/api/core/isDevMode :
Setelah dipanggil sekali, nilainya dikunci dan tidak akan berubah lagi ... Secara default, ini benar, kecuali jika pengguna memanggil enableProdMode sebelum memanggil ini.
Saya telah menemukan bahwa memanggil isDevMode()
dari ng build --prod
build selalu mengembalikan true dan selalu mengunci Anda agar berjalan dalam mode dev. Sebagai gantinya, periksa environment.production
untuk melihat apakah Anda sedang dalam produksi. Maka Anda akan tetap dalam mode produksi.
isDevMode()
adalah cara yang sangat baik untuk mencapai bahwa.
Jika Anda ingin mengetahui mode
Angular, seperti yang dikatakan @yurzui, Anda perlu menelepon { isDevMode } from @angular/core
tetapi itu false
hanya akan kembali jika Anda menelepon enableProdMode
sebelumnya.
Jika Anda ingin mengetahui lingkungan build , dengan kata lain, jika aplikasi Anda berjalan minimal atau tidak, Anda perlu menetapkan variabel build di sistem build Anda ... Menggunakan Webpack
, misalnya, Anda harus melihatnya 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();
Ini kode saya, jadi saya mendapat kesalahan yang sama. Saya baru saja menukar baris 3 dan 4. Kemudian masalah diperbaiki . Jadi sebelum modul bootstrap kita harus mengaktifkan mode --prod.
Yang benar bisa dimasukkan dengan cara ini,
enableProdMode()
platformBrowserDynamic().bootstrapModule(AppModule);
Anda harus berhati-hati bahwa Anda memeriksa nilai balik isDevMode()
fungsi.
Pengaturan saya gagal karena saya memeriksa keberadaan: if (isDevMode)
selalu true
, bahkan dalam produksi karena saya menyatakannya dengan import { isDevMode } from '@angular/core';
.
if (isDevMode())
dikembalikan false
dengan benar.
ng build --prod=true
melalui sudut sudut
if ( isDevMode )
hanya memeriksa jika identifier isDevMode didefinisikan, bukan nol, dan tidak kosong atau nol. Sebagai pengidentifikasi didefinisikan @angular/core
bahwa if () akan selalu mengembalikan true . Sekarang, if( isDevMode() )
sebenarnya akan memanggil fungsi dan itu akan kembali jika itu lingkungan pengembangan atau tidak.
Cukup periksa variabel produksi yang ada di file lingkungan, itu akan benar untuk mode produksi dan salah untuk pengembangan.
import { environment } from 'src/environments/environment';
if (environment.production) {
// for production
} else {
// for development
}