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.tsper vedere come funziona.
main.ts ha il seguente:
import { environment } from './environments/environment';
if (environment.production) {
enableProdMode();
}
Quindi controlla environment.productionper 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 --prodbuild ritorna sempre vero e ti blocca sempre in esecuzione in modalità dev. Invece, controlla environment.productionper vedere se sei in produzione. Quindi rimarrai in modalità di produzione.
isDevMode()è un modo perfettamente perfetto per ottenere quello.
Se vuoi conoscere modeAngular, come ha detto @yurzui, devi chiamare { isDevMode } from @angular/corema può tornare falsesolo se chiami enableProdModeprima.
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 falsecorrettamente.
ng build --prod=truevia angular cli
if ( isDevMode )controlla solo se l'identificatore isDevMode è definito, non null, né vuoto né zero. Poiché l'identificatore è stato definito in @angular/corequesto 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
}