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.ts
para ver cómo funciona.
main.ts
tiene lo siguiente:
import { environment } from './environments/environment';
if (environment.production) {
enableProdMode();
}
Así que verifica environment.production
si 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 --prod
compilación siempre devuelve verdadero y siempre te bloquea para ejecutarte en modo dev. En cambio, verifique environment.production
si está en producción. Entonces permanecerás en modo de producción.
isDevMode()
es una forma perfectamente buena de lograrlo ese.
Si desea conocer mode
Angular, como dijo @yurzui, debe llamar, { isDevMode } from @angular/core
pero solo puede regresar false
si llama enableProdMode
antes.
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 false
correctamente
ng build --prod=true
cli 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/core
que 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
}