Dies scheint einfach zu sein, aber ich konnte keine Lösung finden.
Wie überprüfe ich, ob meine App im Produktionsmodus oder im Entwicklungsmodus ausgeführt wird?
angular
production
maxbellec
quelle
quelle
platformBrowserDynamic().bootstrapModule(AppModule);
Gemäß dem Angular Deployment-Handbuch unter https://angular.io/guide/deployment#enable-production-mode :
main.ts
hat folgendes:Ü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 :Ich habe festgestellt, dass das Aufrufen
isDevMode()
von einemng build --prod
Build immer true zurückgibt und Sie immer daran hindert, im Dev-Modus zu laufen. Überprüfenenvironment.production
Sie stattdessen, ob Sie in Produktion sind. Dann bleiben Sie im Produktionsmodus.quelle
isDevMode()
ist dies ein perfekter Weg Das.es hängt davon ab, was Sie fragen ...
Wenn Sie
mode
Angular kennenlernen möchten , wie @yurzui sagte, müssen Sie anrufen,{ isDevMode } from @angular/core
aber es kannfalse
nur zurückkehren, wenn SieenableProdMode
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 daraufdefinePlugin
.https://webpack.github.io/docs/list-of-plugins.html#defineplugin
quelle
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,
quelle
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 immertrue
, sogar in der Produktion, weil ich es mit deklariert habeimport { isDevMode } from '@angular/core';
.if (isDevMode())
zurückfalse
richtig.quelle
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 . Jetztif( 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.
quelle