Actualmente trato de configurar una aplicación Angular que está alojada en un dominio y obtiene sus scripts y activos de un CDN. La ruta a la aplicación es www.domain.de/subpath/ (obviamente cambiado por esta pregunta) y cuando construyo la aplicación en mi Pipeline de CI, estoy usando ng build--configuration=${ENV} --base-href=${CDN_URL} . Dado que solo con esta configuración, la aplicación intentaría hacer su enrutamiento en CDN_URL , estoy tratando de utilizar el APP_BASE_HREF DI como se describe en Angular Docs .
Sin embargo, no importa lo que configuro como DI Token, siempre obtengo un comportamiento no deseado:
{ provide: APP_BASE_HREF, useValue: `${environment.BASE_URL}/` } Result when navigating to www.domain.de/subpath/ -> www.domain.de/landing-page { provide: APP_BASE_HREF, useValue: `${environment.BASE_URL}/subpath` } Result when navigating to www.domain.de/subpath/ -> www.domain.de/subpath/subpath/landing-page DESIRED Result would be: www.domain.de/subpath/ -> www.domain.de/subpath/landing-page Anteriormente tenía una configuración que usaba ng build --configuration=${ENV} --deploy-url=${CDN_URL} --base-href="/subpath/" pero deploy-url está en desuso y también solo carga scripts desde la CDN pero no los activos.
¿Hay algo que me falta o lo que quiero simplemente no se puede lograr con este enfoque simple?
Intenté durante bastante tiempo cargar activos desde una URL de CDN y enfrenté un problema similar. Esto es lo que terminé haciendo:
declare let __webpack_require__: any; if (environment.production) { enableProdMode(); // eslint-disable-next-line @typescript-eslint/no-unused-vars // eslint-disable-next-line prefer-const const cdnPath = `${environment.BASE_URL}/<subpath>` __webpack_require__.p = cdnPath; } Esto actualiza la webpack del paquete runtime.js desde la que se cargan los activos sobre la marcha. Es bastante hacky, pero funcionó para mí.