proyecto - instalar angular 5
Cómo verificar si la aplicación angular se ejecuta en modo Producción o Desarrollo (5)
depende de lo que estés preguntando ...
Si desea conocer el
mode
de Angular, como dijo @yurzui, debe llamar a
{ isDevMode } from @angular/core
pero puede devolver
false
solo si llama a
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 ... Usando
Webpack
, por ejemplo, debería echar un vistazo a
definePlugin
.
https://webpack.github.io/docs/list-of-plugins.html#defineplugin
new webpack.DefinePlugin({
ENV_PRODUCTION: !!process.env.NODE_ENV
});
Esto parece fácil, pero no pude encontrar ninguna solución.
Entonces, ¿cómo verifico si mi aplicación se ejecuta en modo de producción o en modo de desarrollo?
Debe tener cuidado de verificar el valor de retorno de la función
isDevMode()
.
Mi configuración fallaba porque estaba comprobando la existencia:
if (isDevMode)
siempre fue
true
, incluso en producción porque lo declaré con
import { isDevMode } from ''@angular/core'';
.
if (isDevMode())
devolvió
false
correctamente.
Puedes probar 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
Según la guía de implementación angular en https://angular.io/guide/deployment#enable-production-mode :
Construir para producción (o agregar el indicador --environment = prod) habilita el modo de producción Mire
main.ts
generado pormain.ts
para ver cómo funciona.
main.ts
tiene lo siguiente:
import { environment } from ''./environments/environment'';
if (environment.production) {
enableProdMode();
}
Por lo tanto, compruebe
environment.production
para ver si está en producción.
Lo más probable es que NO desee llamar a
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 a
isDevMode()
desde una
ng build --prod
build siempre devuelve verdadero y siempre te bloquea para que te
ng build --prod
en modo dev.
En su lugar, verifique el
environment.production
para ver si está en producción.
Entonces permanecerás en modo de producción.
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);