es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

¿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).

Tags:  , ,

Answer

  1. Avatar for 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:

    1. Verificar la consola del navegador: Abre las herramientas de desarrollo del navegador y verifica si hay errores o advertencias relacionadas con la carga de la aplicación Angular. Esto podría darte algunas pistas sobre la causa raíz del problema.
    2. 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 carpeta ClientApp. Luego, ejecuta el siguiente comando:

      npm run start
      

      Esto debería iniciar el servidor Angular CLI y mostrar sus registros en la terminal. Si hay errores o advertencias, deberían mostrarse aquí.

    3. Verificar los permisos: Asegúrate de que el usuario que ejecuta el servicio modulo tenga los permisos necesarios para acceder a la carpeta ClientApp 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 servicio modulo por un usuario con los permisos necesarios.

    4. 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:

      npm install
      

      Si hay errores o advertencias, deberían mostrarse en la terminal.

    5. 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 propiedad outputPath esté configurada correctamente. Esta propiedad determina dónde se colocarán los archivos compilados de la aplicación Angular, y debe coincidir con la propiedad configuration.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.

Comments are closed.