Las traducciones son generadas a través de traducción automática. En caso de conflicto entre la traducción y la version original de inglés, prevalecerá la version en inglés.
Configuración de las dependencias de su aplicación en Elastic Beanstalk
Es posible que su aplicación dependa de algunos Node.js módulos, como los que se especifican en las require()
sentencias. Los módulos se almacenan en un directorio node_modules
. Cuando se ejecute la aplicación, Node.js carga los módulos desde este directorio. Para obtener más información, consulte Cargar desde carpetas node_modules
Puede especificar las dependencias de módulos mediante un archivo package.json
. Si Elastic Beanstalk detecta este archivo y no hay un directorio node_modules
, ejecuta npm install
como el usuario webapp. El comando npm
install
instala las dependencias en el directorio node_modules
, que Elastic Beanstalk crea previamente. El comando npm
install
accede a los paquetes que figuran en el archivo package.json
desde el registro npm público o de otras ubicaciones. Para obtener más información, consulte el sitio web npm Docs
Si Elastic Beanstalk detecta el directorio node_modules
, no ejecuta npm install
, incluso si existe un archivo package.json
. Elastic Beanstalk asume que los paquetes de dependencias están disponibles en el directorio de node_modules
Node.js para acceder y cargar.
En las siguientes secciones se proporciona más información sobre cómo establecer su Node.js dependencias de módulos para su aplicación.
nota
Si sufre algún problema de implementación cuando Elastic Beanstalk está ejecutando npm install
, considere un enfoque alternativo. Incluya el directorio node_modules
con los módulos de dependencias en el paquete de código fuente de la aplicación. De esta manera se pueden evitar problemas relacionados con la instalación de dependencias del registro npm público mientras se investiga el problema. Como los módulos de dependencia provienen de un directorio local, hacer esto también podría ayudar a reducir el tiempo de implementación. Para obtener más información, consulte Incluyendo Node.js dependencias en un directorio node_modules
Especificando Node.js dependencias con un archivo package.json
Incluya un archivo package.json
en la raíz del proyecto de origen para especificar paquetes de dependencias y proporcionar un comando de inicio. Cuando hay un archivo package.json
y no hay un directorio node_modules
en la raíz de la fuente del proyecto, Elastic Beanstalk ejecuta npm install
como el usuario webapp para instalar las dependencias del registro npm público. Elastic Beanstalk también utiliza el comando start
para iniciar la aplicación. Para obtener más información sobre el archivo package.json
, consulte Especificación de dependencias en un archivo package.json
Utilice la palabra clave scripts
para proporcionar un comando de inicio. En la actualidad, la palabra clave scripts
se utiliza en lugar de la opción heredada NodeCommand
en el espacio de nombres aws:elasticbeanstalk:container:nodejs
.
ejemplo package.json: Express
{
"name": "my-app",
"version": "0.0.1",
"private": true,
"dependencies": {
"ejs": "latest",
"aws-sdk": "latest",
"express": "latest",
"body-parser": "latest"
},
"scripts": {
"start": "node app.js"
}
}
Modo de producción y dependencias de desarrollo
Para especificar sus dependencias en el archivo package.json
, utilice los atributos dependencies y devDependencies. El atributo dependencias designa los paquetes que necesita la aplicación en producción. El atributo devDependencies designa los paquetes que solo se necesitan para el desarrollo y las pruebas locales.
Elastic Beanstalk ejecuta npm install
como usuario webapp con los siguientes comandos. Las opciones de comando varían según la versión de npm incluida en la ramificación de la plataforma en la que se ejecute la aplicación.
-
npm v6: de forma predeterminada, Elastic Beanstalk instala dependencias en modo de producción. Usa el comando
npm install --production
. -
npm v7 o superior: Elastic Beanstalk omite el atributo devDependencies. Usa el comando
npm install --omit=dev
.
Los dos comandos enumerados anteriormente no instalan los paquetes que son atributos devDependencies.
Si necesita instalar los paquetes devDependencies, defina la propiedad del entorno NPM_USE_PRODUCTION enfalse
. Con esta configuración, no utilizaremos las opciones anteriores cuando ejecutemos la instalación de npm. Esto hará que se instalen los paquetes de atributos devDependencies.
SSH y HTTPS
A partir del lanzamiento de la plataforma Amazon Linux 2 del 7 de marzo de 2023, también podrá usar los protocolos SSH y HTTPS para recuperar paquetes de un repositorio de Git. Ramificación de la plataforma Node.js 16 admite los protocolos SSH y HTTPS. Node.js 14 solo admite el protocolo HTTPS.
ejemplo package.json — Node.js 16 es compatible con HTTPS y SSH
...
"dependencies": {
"aws-sdk": "https://github.com/aws/aws-sdk-js.git",
"aws-chime": "git+ssh://git@github.com:aws/amazon-chime-sdk-js.git"
}
Versiones y rangos de las versiones
importante
La función para especificar los rangos de versiones no está disponible para las sucursales de la plataforma Node.js que se ejecutan en la versión AL2 023. Solo admitimos una versión de Node.js dentro de una rama Node.js específica en AL2 023. Si el archivo package.json
especifica un rango de versiones, lo ignoraremos y utilizaremos de forma predeterminada la versión de la ramificación de la plataforma de Node.js.
Utilice la engines
palabra clave del package.json
archivo para especificar Node.js versión que desea que utilice la aplicación. También puede especificar un rango de versiones mediante la notación npm. Para obtener más información sobre la sintaxis de los rangos de versiones, consulte Control de versiones semántico con npmengines
palabra clave del Node.js package.json
el archivo reemplaza a la NodeVersion
opción antigua del espacio de aws:elasticbeanstalk:container:nodejs
nombres.
ejemplo package.json
— Único Node.js versión
{
...
"engines": { "node" : "14.16.0" }
}
ejemplo package.json
– Node.js gama de versiones
{
...
"engines": { "node" : ">=10 <11" }
}
Cuando se indica un rango de versiones, Elastic Beanstalk instala la última Node.js versión que la plataforma tiene disponible dentro de la gama. En este ejemplo, el rango indica que la versión debe ser mayor o igual que la versión 10, pero inferior que la versión 11. Como resultado, Elastic Beanstalk instala la versión más reciente Node.js versión 10.x.y, que está disponible en la plataforma compatible.
Tenga en cuenta que solo puede especificar un Node.js versión que corresponda a la rama de su plataforma. Por ejemplo, si utilizas la Node.js La rama de 16 plataformas, solo puede especificar una 16.x.y Node.js versión. Puede utilizar las opciones del rango de versiones admitidas por npm para aumentar la flexibilidad. Para válido Node.js versiones para cada rama de la plataforma, consulte Node.jsen la guía de AWS Elastic Beanstalk plataformas.
nota
Cuando la compatibilidad de la versión de Node.js que utiliza se elimine de la plataforma, deberá cambiar o eliminar la configuración de la versión de Node.js antes de realizar una actualización de la plataforma. Esto puede suceder cuando se identifica una vulnerabilidad de seguridad en una o varias versiones de Node.js
Cuando esto sucede, si se intenta actualizar a una nueva versión de la plataforma no compatible con la versión de Node.js configurada, se producirá un error. Para evitar la necesidad de crear un nuevo entorno, cambie la configuración de la versión Node.jspackage.json
a una versión Node.js compatible con las versiones anterior y nueva de la plataforma. Tiene la opción de especificar un rango de versiones de Node.js que incluya una versión compatible, como se describió anteriormente en este tema. También tiene la opción de eliminar la configuración e implementar el nuevo paquete de origen.
Incluyendo Node.js dependencias en un directorio node_modules
Para implementar paquetes de dependencias en instancias del entorno junto con el código de la aplicación, inclúyalos en un directorio llamado node_modules
en la raíz del origen del proyecto. Para obtener más información, consulte Downloading and installing packages locally
Al implementar un directorio en un 023/ node_modules
AL2 AL2 Node.js versión de plataforma, Elastic Beanstalk asume que está proporcionando sus propios paquetes de dependencias y evita instalar las dependencias especificadas en un archivo package.json. Node.js busca las dependencias en el directorio. node_modules
Para obtener más información, consulte Cargar desde carpetas node_modules
nota
Si sufre algún problema de implementación cuando Elastic Beanstalk ejecuta npm install
, considere la posibilidad de utilizar el enfoque descrito en este tema como solución alternativa mientras investiga el problema.