Pasé algún tiempo trabajando en un proyecto de PowerShell para automatizar algunas compilaciones de mis aplicaciones C# y Angular que se basan en @Nrwl NX monorepos. Antes de esto, todo funcionaba bien, pero cuando intento un simple:
nx build --baseHref=/apps/admin/ --deployUrl=/apps/admin/ --watchahora me sale el error
ENOENT: "no such file or directory, open 'd:\Projects\TheApp\Source\Angular.Apps/apps/the-client/src/environments/environment.prod.ts'" Problema : supongo que está buscando environment.prod.ts porque la sección replaceFile, pero como estoy construyendo en un desarrollador local, habría pensado que no debería hacer el reemplazo en absoluto.
Además: está buscando el archivo de entorno APP-CLIENT aunque estoy creando la aplicación APP-ADMIN.
Algunos puntos que podrían haber causado problemas durante mi proyecto de automatización de compilación:
Cambié el nombre de todas las configuraciones de la aplicación en workspace.json. Entonces, por ejemplo, "producción" se convirtió en "producción-cliente1", que utiliza el archivo environment.prod.client1.ts durante el reemplazo.
"archivoReemplazos": [
{
"reemplazar": "aplicaciones/app-admin/src/environments/environment.ts",
"con": "aplicaciones/app-admin/src/environments/environment.prod.orgb.ts" }
],
En 1) arriba mencioné el archivo environment.prod.client1.ts que originalmente es el archivo environment.prod.ts. Dado que el error menciona que no puede encontrar este archivo, ¿podría ser que el problema esté aquí o que deba cambiar alguna configuración adicional para que esto funcione?
Nota final: mi cmdlet de PowerShell llama al siguiente comando:
nx build portfolio-client --deleteOutputPath=false --baseHref=/apps/client/ --deployUrl=/apps/client/ --configuration=staging-client-client1Y esto funciona de maravilla, al igual que la aplicación de administración y las variaciones para cada cliente. Solo durante las compilaciones de desarrollo estoy experimentando estos problemas.
Edición 1:
Creé archivos ficticios para environment.prod.ts y environment.staging.ts en los dos proyectos de tipo "aplicación" que tengo y esto resolvió el problema. Sin embargo, estos archivos están en blanco, por lo que no estoy seguro de por qué la compilación para Dev/local no funciona solo con el archivo environment.ts
Encontré la respuesta en los comentarios del siguiente problema informado de GitHub: "Error: ENOENT: no existe tal archivo o directorio" para el archivo eliminado #3370
El resultado fue que el archivo Nrwl file-hasher.js utiliza hashes de git y, como no había realizado esos cambios, estaba buscando un nombre de archivo antiguo. Lo resolví organizando y confirmando todos mis cambios en la rama actual.
Mirando más allá, parece ser un error que luego se solucionó en Nx 10.0.2 y versiones posteriores, que aún no hemos actualizado.