web-dev-qa-db-fra.com

Comment vérifier si Angular application s'exécutant en mode Production ou Développement

Cela semble facile, mais je n’ai trouvé aucune solution.

Alors, comment vérifier si mon application fonctionne en mode production ou en mode dev?

88
maxbellec

Vous pouvez essayer cette fonction isDevMode

import { isDevMode } from '@angular/core';

...
export class AppComponent { 
  constructor() {
    console.log(isDevMode());
  }
}

Une note : soyez prudent avec cette fonction

if(isDevMode()) {
  enableProdMode();
}

Tu auras

Erreur: Impossible d'activer le mode prod après la configuration de la plate-forme

150
yurzui

Selon le Angular Guide de déploiement à l'adresse https://angular.io/guide/deployment#enable-production-mode :

La construction pour la production (ou l’ajout de l’indicateur --environment = prod) active le mode de production . Regardez le main.ts généré par la CLI pour voir comment travaux.

main.ts a les caractéristiques suivantes:

import { environment } from './environments/environment';

if (environment.production) {
  enableProdMode();
}

Vérifiez donc environment.production pour voir si vous êtes en production.

Très probablement, vous ne souhaitez PAS appeler isDevMode(). Selon la Angular API documentation à l'adresse https://angular.io/api/core/isDevMode :

Après avoir appelé une fois, la valeur est verrouillée et ne changera plus ... Par défaut, c'est vrai, à moins qu'un utilisateur appelle enableProdMode avant d'appeler ceci.

J'ai trouvé que l'appel de isDevMode() à partir d'un build ng build --prod renvoie toujours la valeur true et vous oblige toujours à exécuter en mode dev. Au lieu de cela, vérifiez environment.production pour voir si vous êtes en production. Ensuite, vous resterez en mode production.

15
Ron DeSantis

cela dépend de ce que vous demandez ...

Si vous voulez connaître la mode de Angular, comme @yurzui l’a dit, vous devez appeler { isDevMode } from @angular/core mais il ne peut renvoyer false que si vous appelez enableProdMode auparavant.

Si vous souhaitez connaître l'environnement de construction , en d'autres termes, si votre application est en cours d'exécution ou non, vous devez définir une variable de construction dans votre version. system ... En utilisant Webpack, par exemple, vous devriez jeter un oeil à definePlugin.

https://webpack.github.io/docs/list-of-plugins.html#defineplugin

new webpack.DefinePlugin({
  ENV_PRODUCTION: !!process.env.NODE_ENV
});
2
Hitmands

import { platformBrowserDynamic } from '@angular/platform-browser-dynamic' import { enableProdMode } from '@angular/core'; import { AppModule } from './app.module'

platformBrowserDynamic().bootstrapModule(AppModule); enableProdMode();

C'était mon code, alors j'ai eu la même erreur. Je viens d'échanger les lignes 3 et 4. Ensuite, le problème est corrigé. Donc, avant d’amorcer le module, nous devrions activer le mode --prod.

Le correct peut être mis de cette façon,

enableProdMode() platformBrowserDynamic().bootstrapModule(AppModule);

1
DEEPAN KUMAR