amazon web services - Desplegando Angular 6 Universal usando Elastic Beanstalk AWS
Estoy trabajando en Angular 6 Universal en AWS. Mi sitio web está alojado en AWS y lo despliego usando Elastic Beanstalk.
Mi aplicación Angular 6 Universal fue creada usando @ng-toolkit/universal usando Angular CLI, que agrega automáticamente la configuración de servidor requerida en la aplicación.
Me enfrenté al problema durante el despliegue. Mi despliegue siempre falla. No tengo idea de cómo desplegar la versión de producción de Angular compilado así como los archivos del servidor Nodejs junto con él. Busqué en Google y no pude encontrar una solución adecuada.
Pasos que hice :
- ng new my-app --routing
- ng add @ng-toolkit/universal
- Realicé los cambios necesarios en algunos archivos
- Ejecutó el comando para compilar la versión de producción y generó los archivos del servidor
- Carpeta /dist creada con la versión de navegador y servidor
La estructura de carpetas se ve algo así :
Intenté desplegar /dist al servidor pero falla. Intenté desplegar toda la carpeta raíz con Typescript pero todavía falla.
Finalmente descubrí el problema y creé este hilo para que pueda ayudar a otros.
Respuesta #1
Elastic Beanstalk, por defecto, intenta ejecutar primero el archivo Server.js; si no lo encuentra, entonces app.js; si tampoco lo encuentra, ejecutará el comando "npm start"
Entonces hay 2 soluciones
- El archivo local.js (creado por @ng-toolkit) ejecuta el servidor nodejs. Así que debes renombrarlo a server.js o app.js para que EB lo ejecute después del despliegue exitoso y luego desplegar toda la carpeta raíz en tu servidor usando el comando "eb deploy".
- O de lo contrario, copie el local.js en la carpeta /dist y renómbrelo como app.js/server.js y edite el archivo para cambiar el directorio "./server_filename"
// generated by @ng-toolkit/universal
const port = process.env.PORT || 8080;
const server = require('./_server'); <!-- Renamed to _server -->
server.app.listen(port, () => {
console.log("Listening on: http://localhost:" + port );
});Y el paso final e importante.
- Elastic Beanstalk falla en el despliegue y lanza un error en la instalación de @ng-toolkit. Dado que @ng-toolkit/universal está en beta, puede tener errores.
- Así que abre el archivo package.json y mueve "@ng-toolkit/universal": de dependencies a devDependencies
¡Eso es todo! Ahora despliega y tu aplicación debería funcionar. Por favor, avísame si enfrentas algún problema o si conoces otra mejor práctica para este despliegue.
