Risposte:
È possibile utilizzare questa funzione isDevMode
import { isDevMode } from '@angular/core';
...
export class AppComponent {
constructor() {
console.log(isDevMode());
}
}
Una nota : fai attenzione con questa funzione
if(isDevMode()) {
enableProdMode();
}
Otterrete
Errore: impossibile abilitare la modalità prod dopo l'installazione della piattaforma
variabile d'ambiente
import { environment } from 'src/environments/environment';
if (environment.production) {
//
}
iniettato dalla variabile webpack process.env.NODE_ENV
declare let process: any;
const env = process.env.NODE_ENV;
if (env === 'production') {
//
}
platformBrowserDynamic().bootstrapModule(AppModule);
Per la guida alla distribuzione angolare su https://angular.io/guide/deployment#enable-production-mode :
Costruire per la produzione (o aggiungere il flag --environment = prod) abilita la modalità di produzione Guarda la CLI generata
main.ts
per vedere come funziona.
main.ts
ha il seguente:
import { environment } from './environments/environment';
if (environment.production) {
enableProdMode();
}
Quindi controlla environment.production
per vedere se sei in produzione.
Molto probabilmente NON vuoi chiamare isDevMode()
. Per la documentazione dell'API angolare su https://angular.io/api/core/isDevMode :
Dopo aver chiamato una volta, il valore è bloccato e non cambierà più ... Per impostazione predefinita, questo è vero, a meno che un utente non chiami enableProdMode prima di chiamarlo.
Ho scoperto che chiamare isDevMode()
da una ng build --prod
build ritorna sempre vero e ti blocca sempre in esecuzione in modalità dev. Invece, controlla environment.production
per vedere se sei in produzione. Quindi rimarrai in modalità di produzione.
isDevMode()
è un modo perfettamente perfetto per ottenere quello.
Se vuoi conoscere mode
Angular, come ha detto @yurzui, devi chiamare { isDevMode } from @angular/core
ma può tornare false
solo se chiami enableProdMode
prima.
Se vuoi conoscere l' ambiente di compilazione , in altre parole, se la tua app è in esecuzione ridotta o meno, devi impostare una variabile di compilazione nel tuo sistema di compilazione ... Usando Webpack
, ad esempio, dovresti dare un'occhiata 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();
Questo era il mio codice, quindi ho avuto lo stesso errore. Ho appena scambiato le righe 3 e 4. Quindi il problema è stato risolto . Quindi prima di avviare il modulo di bootstrap dovremmo abilitare la modalità --prod.
Quello corretto può essere messo in questo modo,
enableProdMode()
platformBrowserDynamic().bootstrapModule(AppModule);
Si dovrebbe fare attenzione a controllare il valore restituito della isDevMode()
funzione.
La mia installazione non andava a buon fine perché stavo verificando l'esistenza: if (isDevMode)
era sempre true
, anche in produzione perché l'ho dichiarata con import { isDevMode } from '@angular/core';
.
if (isDevMode())
restituito false
correttamente.
ng build --prod=true
via angular cli
if ( isDevMode )
controlla solo se l'identificatore isDevMode è definito, non null, né vuoto né zero. Poiché l'identificatore è stato definito in @angular/core
questo caso if () restituirà sempre true . Ora, if( isDevMode() )
in realtà chiamerà la funzione e tornerà se è l'ambiente di sviluppo o meno.
Basta controllare la variabile di produzione presente nel file di ambiente, sarà vera per la modalità di produzione e falsa per lo sviluppo.
import { environment } from 'src/environments/environment';
if (environment.production) {
// for production
} else {
// for development
}