Antworten:
Sie können diese Funktion isDevMode verwenden
import { isDevMode } from '@angular/core';
...
export class AppComponent {
constructor() {
console.log(isDevMode());
}
}
Ein Hinweis : Seien Sie vorsichtig mit dieser Funktion
if(isDevMode()) {
enableProdMode();
}
Sie erhalten
Fehler: Der Prod-Modus kann nach dem Einrichten der Plattform nicht aktiviert werden
Umgebungsvariable
import { environment } from 'src/environments/environment';
if (environment.production) {
//
}
injiziert durch die Variable webpack process.env.NODE_ENV
declare let process: any;
const env = process.env.NODE_ENV;
if (env === 'production') {
//
}
platformBrowserDynamic().bootstrapModule(AppModule);
Gemäß dem Angular Deployment-Handbuch unter https://angular.io/guide/deployment#enable-production-mode :
Das Erstellen für die Produktion (oder das Anhängen des Flags --environment = prod) aktiviert den Produktionsmodus. Sehen Sie sich die generierte CLI an, um
main.ts
zu sehen, wie dies funktioniert.
main.ts
hat folgendes:
import { environment } from './environments/environment';
if (environment.production) {
enableProdMode();
}
Überprüfen Sie also environment.production
, ob Sie in Produktion sind.
Höchstwahrscheinlich möchten Sie NICHT anrufen isDevMode()
. Gemäß der Angular API-Dokumentation unter https://angular.io/api/core/isDevMode :
Nach einmaligem Aufruf ist der Wert gesperrt und ändert sich nicht mehr ... Standardmäßig ist dies der Fall, es sei denn, ein Benutzer ruft enableProdMode auf, bevor er dies aufruft.
Ich habe festgestellt, dass das Aufrufen isDevMode()
von einem ng build --prod
Build immer true zurückgibt und Sie immer daran hindert, im Dev-Modus zu laufen. Überprüfen environment.production
Sie stattdessen, ob Sie in Produktion sind. Dann bleiben Sie im Produktionsmodus.
isDevMode()
ist dies ein perfekter Weg Das.
Wenn Sie mode
Angular kennenlernen möchten , wie @yurzui sagte, müssen Sie anrufen, { isDevMode } from @angular/core
aber es kann false
nur zurückkehren, wenn Sie enableProdMode
vorher anrufen .
Wenn Sie die Build-Umgebung kennenlernen möchten, dh wenn Ihre App minimiert ausgeführt wird oder nicht, müssen Sie eine Build-Variable in Ihrem Build-System festlegen ... Verwenden Webpack
Sie beispielsweise einen Blick darauf 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();
Dies war mein Code, daher habe ich den gleichen Fehler erhalten. Ich habe gerade Zeile 3 und 4 vertauscht. Dann ist das Problem behoben . Vor dem Bootstrapping-Modul sollten wir also den --prod-Modus aktivieren.
Das richtige kann auf diese Weise gesetzt werden,
enableProdMode()
platformBrowserDynamic().bootstrapModule(AppModule);
Sie sollten darauf achten, dass Sie den Rückgabewert der isDevMode()
Funktion überprüfen .
Mein Setup schlug fehl, weil ich nach Existenz suchte: if (isDevMode)
war immer true
, sogar in der Produktion, weil ich es mit deklariert habe import { isDevMode } from '@angular/core';
.
if (isDevMode())
zurück false
richtig.
ng build --prod=true
if ( isDevMode )
Überprüft nur, ob der Bezeichner isDevMode definiert ist, nicht null und weder leer noch null. Wie der Bezeichner darin definiert wurde @angular/core
, gibt if () immer true zurück . Jetzt if( isDevMode() )
wird die Funktion tatsächlich aufgerufen und es wird zurückgegeben, ob es sich um eine Entwicklungsumgebung handelt oder nicht.
Überprüfen Sie einfach die in der Umgebungsdatei vorhandene Produktionsvariable. Sie ist für den Produktionsmodus wahr und für die Entwicklung falsch.
import { environment } from 'src/environments/environment';
if (environment.production) {
// for production
} else {
// for development
}