Wydaje się to łatwe, ale nie mogłem znaleźć żadnego rozwiązania.
Jak więc sprawdzić, czy moja aplikacja działa w trybie produkcyjnym czy deweloperskim?
angular
production
maxbellec
źródło
źródło
platformBrowserDynamic().bootstrapModule(AppModule);
Zgodnie z przewodnikiem po Angular Deployment pod adresem https://angular.io/guide/deployment#enable-production-mode :
main.ts
ma następujące cechy:Więc sprawdź
environment.production
czy jesteś w produkcji.Najprawdopodobniej NIE chcesz dzwonić
isDevMode()
. Zgodnie z dokumentacją Angular API na https://angular.io/api/core/isDevMode :Odkryłem, że wywołanie
isDevMode()
zng build --prod
kompilacji zawsze zwraca prawdę i zawsze blokuje działanie w trybie deweloperskim. Zamiast tego sprawdź,environment.production
czy jesteś w produkcji. Następnie pozostaniesz w trybie produkcyjnym.źródło
isDevMode()
jest to doskonały sposób na osiągnięcie że.to zależy od tego, o co prosisz ...
Jeśli chcesz poznać
mode
Angular, jak powiedział @yurzui, musisz zadzwonić,{ isDevMode } from @angular/core
ale może wrócićfalse
tylko wtedy, gdy zadzwoniszenableProdMode
wcześniej.Jeśli chcesz poznać środowisko kompilacji , innymi słowy, czy Twoja aplikacja działa w wersji zminimalizowanej, czy nie, musisz ustawić zmienną kompilacji w swoim systemie kompilacji ... Używając
Webpack
na przykład, powinieneś rzucić okiemdefinePlugin
.https://webpack.github.io/docs/list-of-plugins.html#defineplugin
źródło
To był mój kod, więc mam ten sam błąd. Właśnie zamieniłem linię 3 i 4. Wtedy problem został rozwiązany . Dlatego przed uruchomieniem modułu powinniśmy włączyć tryb --prod.
Właściwy można umieścić w ten sposób,
źródło
Należy uważać, aby sprawdzić wartość zwracaną przez
isDevMode()
funkcję.Moja konfiguracja nie powiodła się, ponieważ sprawdzałem istnienie:
if (isDevMode)
była zawszetrue
, nawet w środowisku produkcyjnym, ponieważ zadeklarowałem to za pomocąimport { isDevMode } from '@angular/core';
.if (isDevMode())
zwróconefalse
poprawnie.źródło
ng build --prod=true
via angular cliif ( isDevMode )
sprawdza tylko, czy zdefiniowano identyfikator isDevMode , a nie null, pusty ani zero. Ponieważ identyfikator został zdefiniowany@angular/core
, if () zawsze będzie zwracać true . Terazif( isDevMode() )
faktycznie wywoła funkcję i zwróci, jeśli jest to środowisko programistyczne, czy nie.Po prostu sprawdź zmienną produkcyjną obecną w pliku środowiskowym, będzie ona prawdziwa dla trybu produkcyjnego i fałszywa dla programowania.
źródło