Réponses:
Vous pouvez utiliser 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
variable d'environnement
import { environment } from 'src/environments/environment';
if (environment.production) {
//
}
injecté par la variable webpack process.env.NODE_ENV
declare let process: any;
const env = process.env.NODE_ENV;
if (env === 'production') {
//
}
platformBrowserDynamic().bootstrapModule(AppModule);
Selon le guide de déploiement angulaire à 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 la CLI générée
main.ts
pour voir comment cela fonctionne.
main.ts
a ce qui suit:
import { environment } from './environments/environment';
if (environment.production) {
enableProdMode();
}
Vérifiez donc environment.production
si vous êtes en production.
Vous ne souhaitez probablement PAS appeler isDevMode()
. Selon la documentation de l'API Angular à l' adresse https://angular.io/api/core/isDevMode :
Après avoir été appelée une fois, la valeur est verrouillée et ne changera plus ... Par défaut, c'est vrai, sauf si un utilisateur appelle enableProdMode avant de l'appeler.
J'ai trouvé que l'appel à isDevMode()
partir d'une ng build --prod
construction renvoie toujours true et vous verrouille toujours dans l'exécution en mode dev. Vérifiez plutôt environment.production
si vous êtes en production. Ensuite, vous resterez en mode production.
isDevMode()
c'est une manière parfaitement appropriée d'accomplir cette.
Si vous voulez connaître le mode
of Angular, comme @yurzui l'a dit, vous devez appeler { isDevMode } from @angular/core
mais il ne peut revenir false
que si vous appelez enableProdMode
avant.
Si vous voulez connaître l' environnement de construction , en d'autres termes, si votre application est en cours d'exécution minifiée ou non, vous devez définir une variable de construction dans votre système de construction ... En utilisant Webpack
, par exemple, vous devriez jeter un œil à 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();
C'était mon code, donc j'ai eu la même erreur. Je viens d'échanger les lignes 3 et 4. Ensuite, le problème est résolu . Donc, avant de démarrer le module, nous devons activer le mode --prod.
Le bon peut être mis de cette façon,
enableProdMode()
platformBrowserDynamic().bootstrapModule(AppModule);
Vous devez faire attention à vérifier la valeur de retour de la isDevMode()
fonction.
Ma configuration échouait parce que je vérifiais l'existence: if (isDevMode)
était toujours true
, même en production parce que je l'ai déclarée avec import { isDevMode } from '@angular/core';
.
if (isDevMode())
renvoyé false
correctement.
ng build --prod=true
via angular cli
if ( isDevMode )
vérifie uniquement si l'identificateur isDevMode est défini, non nul, ni vide ni nul. Comme l'identificateur a été défini @angular/core
, if () retournera toujours true . Maintenant, if( isDevMode() )
appellera réellement la fonction et elle retournera si c'est l'environnement de développement ou non.
Vérifiez simplement la variable de production présente dans le fichier d'environnement, elle sera vraie pour le mode production et fausse pour le développement.
import { environment } from 'src/environments/environment';
if (environment.production) {
// for production
} else {
// for development
}