Respuestas:
Puede usar esta función isDevMode
import { isDevMode } from '@angular/core';
...
export class AppComponent {
constructor() {
console.log(isDevMode());
}
}
Una nota : tenga cuidado con esta función
if(isDevMode()) {
enableProdMode();
}
Conseguirás
Error: no se puede habilitar el modo de producción después de la configuración de la plataforma
Variable ambiental
import { environment } from 'src/environments/environment';
if (environment.production) {
//
}
inyectado por webpack process.env.NODE_ENV variable
declare let process: any;
const env = process.env.NODE_ENV;
if (env === 'production') {
//
}
platformBrowserDynamic().bootstrapModule(AppModule);
Según la guía de implementación angular en https://angular.io/guide/deployment#enable-production-mode :
Construir para la producción (o agregar el indicador --environment = prod) habilita el modo de producción Mire el CLI generado
main.tspara ver cómo funciona.
main.ts tiene lo siguiente:
import { environment } from './environments/environment';
if (environment.production) {
enableProdMode();
}
Así que verifica environment.productionsi estás en producción.
Lo más probable es que NO quieras llamar isDevMode(). Según la documentación de la API angular en https://angular.io/api/core/isDevMode :
Después de llamar una vez, el valor está bloqueado y no cambiará más ... Por defecto, esto es cierto, a menos que un usuario llame a enableProdMode antes de llamar a esto.
Descubrí que llamar isDevMode()desde una ng build --prodcompilación siempre devuelve verdadero y siempre te bloquea para ejecutarte en modo dev. En cambio, verifique environment.productionsi está en producción. Entonces permanecerás en modo de producción.
isDevMode()es una forma perfectamente buena de lograrlo ese.
Si desea conocer modeAngular, como dijo @yurzui, debe llamar, { isDevMode } from @angular/corepero solo puede regresar falsesi llama enableProdModeantes.
Si desea conocer el entorno de compilación , en otras palabras, si su aplicación se ejecuta minimizada o no, debe establecer una variable de compilación en su sistema de compilación ... Utilizando Webpack, por ejemplo, debería echar un vistazo 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();
Este era mi código, así que recibí el mismo error. Acabo de intercambiar las líneas 3 y 4. Luego se solucionó el problema . Entonces, antes del módulo de arranque, debemos habilitar el modo --prod.
El correcto se puede poner de esta manera,
enableProdMode()
platformBrowserDynamic().bootstrapModule(AppModule);
Debe tener cuidado de verificar el valor de retorno de la isDevMode()función.
Mi configuración fallaba porque estaba comprobando la existencia: if (isDevMode)siempre true, incluso en producción porque lo declaraba con import { isDevMode } from '@angular/core';.
if (isDevMode())devuelto falsecorrectamente
ng build --prod=truecli angular
if ( isDevMode )solo comprueba si el identificador isDevMode está definido, no es nulo y no está vacío ni cero. Como el identificador se definió en @angular/coreque if () siempre devolverá verdadero . Ahora, en if( isDevMode() )realidad llamará a la función y regresará si es un entorno de desarrollo o no.
Simplemente verifique la variable de producción presente en el archivo de entorno, será verdadera para el modo de producción y falsa para el desarrollo.
import { environment } from 'src/environments/environment';
if (environment.production) {
// for production
} else {
// for development
}