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.

La misma aplicación de Nodo funciona en Elastic Beanstalk cuando se despliega manualmente a través de la interfaz de línea de comandos (CLI), pero falla al pasar a través de CodePipeline.

Estoy intentando implementar una aplicación de Nuxt en Elastic Beanstalk, he configurado un pipeline de CodePipeline que primero obtiene el código fuente de GitHub cuando se detecta una nueva confirmación en la rama principal, luego lo envía a un proceso de CodeBuild que construye la aplicación utilizando un archivo buildspec.yml. Es muy sencillo, pero lo incluiré de todos modos:

version: 0.2

phases:
  build:
    commands:
      - yarn
      - yarn build
artifacts:
  files:
    - '*/*'

El BuildArtifact anterior se pasa a la etapa de implementación, que básicamente coloca los resultados del proceso de construcción dentro de /var/app/current en la instancia EC2 adjunta al entorno de Elastic Beanstalk.

Y aquí está mi problema: la aplicación no se inicia:

Dec  5 09:08:14 ip-172-31-30-230 web: > nuxt start
Dec  5 09:08:14 ip-172-31-30-230 web: internal/modules/cjs/loader.js:905
Dec  5 09:08:14 ip-172-31-30-230 web: throw err;
Dec  5 09:08:14 ip-172-31-30-230 web: ^
Dec  5 09:08:14 ip-172-31-30-230 web: Error: No se puede encontrar el módulo '../package.json'

Sin embargo, si ejecuto yarn build en mi máquina local desde la misma fuente y uso eb deploy para enviar la construcción, ¡funciona!

He descargado el artefacto de construcción producido por CodeBuild y he comparado el contenido de los archivos zip producidos tanto por mi eb deploy ejecutado localmente como por CodeBuild y… son virtualmente idénticos.

También he inspeccionado el contenido de /var/app/current en la instancia a través de ssh tanto cuando había una implementación funcional desde eb deploy como cuando no funcionaba después de haber sido implementada a través de CodeBuild. El contenido es el mismo, no pude encontrar ninguna diferencia.

Además, al ejecutar yarn start a través de la terminal funcionó cuando se implementó desde mi terminal local y dio el mismo error que vi en los registros de Elastic Beanstalk cuando se implementó desde CodeBuild.

Mi cabello se está volviendo blanco, no puedo entender qué está causando este lío.

Tags:  , , , ,

Answer

  1. Avatar for davy.ai

    Parece que puede haber algunas diferencias en cómo se está construyendo la aplicación en tu máquina local en comparación con el proceso de CodeBuild. Un posible problema podría estar relacionado con las rutas de los archivos, ya que el mensaje de error menciona que no puede encontrar el archivo package.json.

    Asegúrate de que el archivo buildspec.yml esté especificando el directorio de trabajo y las rutas de los archivos correctos. También puedes intentar utilizar rutas de archivos absolutas en lugar de relativas para evitar posibles problemas con la resolución de las rutas de archivos.

    Otra cosa que debes revisar es si todas las dependencias requeridas se están instalando correctamente durante el proceso de CodeBuild. Verifica los registros de CodeBuild para ver si hay errores o advertencias relacionadas con la instalación de paquetes.

    Si todo lo demás falla, intenta ejecutar la aplicación en modo de depuración para obtener mensajes de error más detallados, o incluso intenta implementar la aplicación manualmente para ver si hay alguna diferencia en el proceso de implementación entre CodeBuild y eb deploy.

Comments are closed.