¿Por qué Angular + ASP.NET Core SPA no funciona en una máquina virtual de Ubuntu en red?
Estoy desplegando una aplicación ASP.NET 5 con Angular 11, SPA en una ubicación de red en una VM local Ubuntu 20.04. He publicado la aplicación como autónoma nativa de Linux. La API web y la aplicación del cliente tienen la misma URL/puerto, y funcionan en la máquina de desarrollo.
Tengo esto en appsettings.json:
"ApplicationUrl": "http://ubuntu1:5000",
"Kestrel": {
"Endpoints": {
"Http": {
"Url": "http://192.168.0.120:5000"
}
}
},
Puedo ver la página index.html con el mensaje de carga de la aplicación, pero el problema es que la parte de Angular no se está iniciando. ¿Hay algún registro que pueda consultar en algún lugar? La aplicación web en sí parece funcionar bien, ya que he probado la API web desde Postman.
Tengo en el código .NET:
services.AddSpaStaticFiles(configuration =>
{
configuration.RootPath = "ClientApp/dist";
});
//...
app.UseSpa(spa =>
{
spa.Options.SourcePath = "ClientApp";
if (env.IsDevelopment())
{
spa.UseAngularCliServer(npmScript: "start");
}
});
También en /etc/systemd/system/modulo.service en la VM tengo:
[Unit]
Description=Modulo ASP .NET Web Application
[Service]
WorkingDirectory=/var/modulo
ExecStart=/var/modulo/Modulo
Restart=always
RestartSec=10
SyslogIdentifier=modulo-app
User=paul (También lo intenté con www-data)
Environment=ASPNETCORE_ENVIRONMENT=Production
[Install]
WantedBy=multi-user.target
No recibo errores al reiniciar el servicio en Ubuntu. Y el estado es activo (ejecutándose).
davy.ai
Posible solución:
Una posible causa de que la parte de Angular no se inicie podría ser que el servidor Angular CLI no se esté iniciando correctamente. Esto podría ser debido a diferentes razones, como dependencias faltantes, configuraciones incorrectas o problemas de permisos.
Para solucionar este problema, podrías intentar los siguientes pasos:
Verificar los registros del servidor Angular CLI: Dado que estás utilizando el middleware
spa.UseAngularCliServer
para servir la aplicación Angular, podrías verificar los registros de este servidor para ver si hay errores o advertencias. Para hacerlo, abre una ventana de terminal en la máquina virtual de Ubuntu y navega hasta la carpetaClientApp
. Luego, ejecuta el siguiente comando:Esto debería iniciar el servidor Angular CLI y mostrar sus registros en la terminal. Si hay errores o advertencias, deberían mostrarse aquí.
Verificar los permisos: Asegúrate de que el usuario que ejecuta el servicio
modulo
tenga los permisos necesarios para acceder a la carpetaClientApp
y su contenido. Podrías intentar ejecutar el servidor Angular CLI manualmente con el mismo usuario para ver si funciona. Si no funciona, podrías intentar cambiar el usuario que ejecuta el serviciomodulo
por un usuario con los permisos necesarios.Verificar las dependencias: Asegúrate de que todas las dependencias necesarias para la aplicación Angular estén instaladas y actualizadas. Podrías intentar ejecutar el siguiente comando en la carpeta
ClientApp
para instalar/actualizar las dependencias:Si hay errores o advertencias, deberían mostrarse en la terminal.
Verificar las configuraciones: Asegúrate de que todas las configuraciones relacionadas con la aplicación Angular sean correctas. En particular, verifica el archivo
angular.json
para asegurarte de que la propiedadoutputPath
esté configurada correctamente. Esta propiedad determina dónde se colocarán los archivos compilados de la aplicación Angular, y debe coincidir con la propiedadconfiguration.RootPath
en el código .NET.Si ninguno de estos pasos soluciona el problema, podrías intentar comunicarte con la comunidad de Angular o .NET para obtener más ayuda.