El uso de las variables de entorno en Angular 2 no produce los resultados esperados

0

Cuando lo hagamos, ng serve --env=prod¿no debería funcionar con los valores establecidos en environment.prod.ts? Bueno, en mi caso, no es así: ¡siempre obtengo los valores de environment.ts! (que es la versión de desarrollo como sabes)

He incluido todas las secciones relevantes que creo que son importantes cuando se trata de usar las variables de entorno en Angular 2+.

¿Podrías señalarme si me perdí alguno?


main.ts

import { enableProdMode } from '@angular/core';
import { environment } from './environments/environment';
if (environment.production) {
  enableProdMode();
} // if I run enableProdMode(); 

environment.ts

export const environment = {
  production: false, 
  serverBasePath: '',  
};

environment.prod.ts

export const environment = {
  production: true, 
  serverBasePath: '/mySubFolder',  
};

componente.ts

import { environment } from './../../../environments/environment';
...
this.serverBasePath = environment.serverBasePath;

Y finalmente, solo para cubrir nuestra base ...

angular-cli.json

...
"environmentSource": "environments/environment.ts",
"environments": {
    "dev": "environments/environment.ts",
    "prod": "environments/environment.prod.ts"
}
...
2

Tienes que usar:

ng serve --environment=prod

o

ng serve -e=prod

lea aquí para conocer las posibles opciones con el ng servecomando

6
  • Por un momento, realmente me emocionaste. Pero esto no hace ninguna diferencia. Aunque los documentos dicen y hacen que parezca que esos 2 son los únicos, no es cierto. --env también es una opción válida. Lo sé porque si uso --env o --environment, cli no se queja pero dice que si lo hago --enx, me dice que no lo reconoce. 5 de ene. De 2018 a las 19:19
  • ¿Qué versión de cli estás usando? ¿Y enableProdModefunciona y serverBasePathno ... o ambos no? 5 de ene. De 2018 a las 19:40
  • buena pregunta. la versión es 1.2.1. En cuanto al enableProdMode, esto es lo que puedo contarte al respecto. si ejecuto enableProdMode fuera de la condición if que nunca coincide, serverBasePath sigue siendo nada, pero la función isDevMode () de (import {isDevMode} from '@ angular / core';) genera FALSE. Pero, si no forzamos el enableProdMode en main.ts, da como resultado TRUE. Hay algo totalmente sospechoso en todo esto. Continuaré comprobando location.href.url y luego decidiré si estoy en el localHost o en el servidor. Este es el momento de morder la bala por mí 5 de ene. De 2018 a las 19:52
  • @AverageJoe esa versión tiene más de medio año. Lo más probable es que la actualización a la última versión lo resuelva 5 de ene. De 2018 a las 20:03
  • lo más probable es que tengas razón ... simplemente no quería hacerlo en medio de un momento crucial ... ya sabes, cambios importantes como ese pueden arrojar todo tipo de situaciones raras ... y también existe esa situación local vs global cli cosas que siempre me atrapan. Ya tengo 400 mg de ibuprofeno para environment.prod.ts :) 5 de ene. De 2018 a las 20:07