

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
<a name="nodejs-platform-dependencies"></a>

La aplicación puede tener dependencias en algunos módulos Node.js, como los que se especifican en las declaraciones `require()`. Los módulos se almacenan en un directorio `node_modules`. Cuando se ejecuta la aplicación, Node.js carga los módulos de este directorio. Para obtener más información, consulte [Loading from node\$1modules folders](https://nodejs.org/api/modules.html#modules_loading_from_node_modules_folders) (Carga desde carpetas node\$1modules) en la documentación de Node.js.

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](https://docs.npmjs.com/about-the-public-npm-registry). 

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 `node_modules` para que Node.js pueda acceder y cargar.

En las siguientes secciones, se ofrece más información sobre cómo establecer las dependencias de los módulos de Node.js de la 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 [Inclusión de dependencias Node.js en un directorio node\$1modules](#nodejs-platform-nodemodules)

## Especificación de dependencias de Node.js con un archivo package.json
<a name="nodejs-platform-packagejson"></a>

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`](https://docs.npmjs.com/specifying-dependencies-and-devdependencies-in-a-package-json-file) en el sitio web *npm Docs*. 

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`.

**Example 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.

Si necesita instalar los paquetes *devDependencies*, defina la propiedad del entorno NPM\$1USE\$1PRODUCTION en`false`. 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*.

## Inclusión de dependencias Node.js en un directorio node\$1modules
<a name="nodejs-platform-nodemodules"></a>

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](https://docs.npmjs.com/downloading-and-installing-packages-locally) (Descarga e instalación de paquetes a nivel local) en el sitio web *npm Docs*. 

[Al implementar un `node_modules` directorio en una versión de AL2 Node.js plataforma AL2023/, Elastic Beanstalk asume que está proporcionando sus propios paquetes de dependencias y evita instalar las dependencias especificadas en un archivo package.json.](#nodejs-platform-packagejson) Node.jsbusca las dependencias en el directorio. `node_modules` Para obtener más información, consulte [Loading from node\$1modules Folders](https://nodejs.org/api/modules.html#modules_loading_from_node_modules_folders) (Carga desde carpetas node\$1modules) en la documentación de Node.js.

**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.   
 

### Consideraciones sobre Node.js en Amazon Linux 2
<a name="nodejs-al2-considerations"></a>

Lea esta sección si utiliza una rama de la plataforma *Node.js* que se ejecuta en *Amazon Linux 2*.

#### Consideraciones sobre Node.js en Amazon Linux 2
<a name="nodejs-al2-considerations-detail"></a>

**nota**  
La información de este tema se aplica a las ramas de Node.js plataforma que se ejecutan en Amazon Linux 2. El contenido aquí describe características y comportamientos AL2 específicos que difieren de AL2023.

**Variaciones de comandos**  
Las opciones de comando varían en función de la versión de npm incluida en la rama de la plataforma Amazon Linux 2 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*. 

**Protocolos SSH y HTTPS para las dependencias de Git**  
A partir de la versión de la plataforma Amazon Linux 2 del 7 de marzo de 2023, puede utilizar los protocolos SSH y HTTPS para recuperar paquetes de un repositorio de Git. La ramificación de la plataforma 16 de Node.js admite los protocolos SSH y HTTPS. 14 de Node.js solo admite el protocolo HTTPS.

**Example package.json: 16 de Node.js admite 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**  
Utilice la palabra clave `engines` del archivo `package.json` para especificar la versión de Node.js 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 [Semantic Versioning using npm](https://nodejs.dev/learn/semantic-versioning-using-npm) (Control de versiones semánticas mediante npm) en el sitio web de Node.js. La palabra clave `engines` del archivo `package.json` de Node.js reemplaza la opción heredada `NodeVersion` en el espacio de nombres `aws:elasticbeanstalk:container:nodejs`.

**importante**  
La función para especificar los rangos de versiones no está disponible para las sucursales de la plataforma Node.js en AL2023 las que se estén ejecutando. Solo admitimos una versión de Node.js en una rama Node.js específica AL2023. 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.

**Example `package.json`: versión de Node.js única**  

```
{
    ...
    "engines": { "node" : "14.16.0" }
  }
```

**Example `package.json`: rango de versiones de Node.js**  

```
{
    ...
    "engines": { "node" : ">=10 <11" }
  }
```

Cuando se indica un rango de versiones, Elastic Beanstalk instala la última versión de Node.js que la plataforma tiene disponible dentro del rango. 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 última versión 10.x.y de Node.js, que está disponible en la [plataforma compatible](https://docs.aws.amazon.com/elasticbeanstalk/latest/platforms/platforms-supported.html#platforms-supported.nodejs).

Tenga en cuenta que solo puede especificar una versión de Node.js que corresponda con la ramificación de la plataforma. Por ejemplo, si utiliza la ramificación de la plataforma 16 de Node.js, puede especificar solo una versión 16.x.y de Node.js. Puede utilizar las opciones del rango de versiones admitidas por npm para aumentar la flexibilidad. Para obtener versiones válidas de Node.js para cada ramificación de la plataforma, consulte [https://docs.aws.amazon.com/elasticbeanstalk/latest/platforms/platforms-supported.html#platforms-supported.nodejs](https://docs.aws.amazon.com/elasticbeanstalk/latest/platforms/platforms-supported.html#platforms-supported.nodejs) en la guía *AWS Elastic Beanstalk Platforms*.

**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](using-features.platform.upgrade.md). 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.js`package.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.