

Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.

# Configuration des dépendances de votre application sur Elastic Beanstalk
<a name="nodejs-platform-dependencies"></a>

Votre application peut avoir des dépendances sur certains modules Node.js, comme ceux que vous spécifiez dans les instructions `require()`. Ces modules sont stockés dans un répertoire `node_modules`. Lorsque votre application s'exécute, Node.js charge les modules depuis ce répertoire. Pour en savoir plus, consultez [Loading from node\_modules folders](https://nodejs.org/api/modules.html#modules_loading_from_node_modules_folders) (Chargement depuis les dossiers node\_modules) dans la documentation Node.js.

Vous pouvez spécifier ces dépendances de module à l'aide d'un fichier `package.json`. Si Elastic Beanstalk détecte ce fichier et qu'aucun répertoire `node_modules` n'est présent, Elastic Beanstalk exécute `npm install` en tant qu'utilisateur *webapp*. La commande `npm install` installe les dépendances dans le répertoire `node_modules` créé au préalable par Elastic Beanstalk. La commande `npm install` accède aux packages répertoriés dans le fichier `package.json` à partir du registre public npm ou d'autres emplacements. Pour en savoir plus, consultez le site Web [npm Docs](https://docs.npmjs.com/about-the-public-npm-registry). 

Si Elastic Beanstalk détecte le répertoire `node_modules`, Elastic Beanstalk ne s'exécute pas `npm install`, même si un fichier `package.json` existe. Elastic Beanstalk part du principe que les packages de dépendance sont disponibles dans le répertoire`node_modules` pour Node.js à des fins d'accès et de chargement.

Les sections suivantes fournissent des informations supplémentaires sur la définition des dépendances de modules Node.js pour votre application.

**Note**  
Si vous rencontrez des problèmes de déploiement lors de l'exécution d'Elastic Beanstalk `npm install`, envisagez une autre approche. Incluez le répertoire `node_modules` avec les modules de dépendance dans l’offre groupée source de votre application. Cela peut contourner les problèmes liés à l'installation de dépendances à partir du registre public npm pendant que vous étudiez le problème. Comme les modules de dépendance proviennent d'un répertoire local, cela peut également contribuer à réduire le temps de déploiement. Pour de plus amples informations, consultez [Inclusion des dépendances Node.js dans un répertoire node\_modules](#nodejs-platform-nodemodules).

## Spécification des dépendances Node.js avec un fichier package.json
<a name="nodejs-platform-packagejson"></a>

Utilisez un fichier `package.json` à la racine de votre source de projet pour spécifier des packages de dépendance et pour fournir une commande start. Lorsqu'un fichier `package.json` est présent et qu'aucun répertoire `node_modules` n'est présent à la racine de la source de votre projet, Elastic Beanstalk exécute `npm install` en tant qu'utilisateur *webapp* pour installer les dépendances à partir du registre public npm. Il utilise également la commande `start` pour démarrer votre application. Pour en savoir plus sur le fichier `package.json`, consultez la section [Définition des dépendances dans un fichier `package.json`](https://docs.npmjs.com/specifying-dependencies-and-devdependencies-in-a-package-json-file) sur le site Web de *npm Docs*. 

Utilisez le mot-clé `scripts` pour fournir une commande start. Le mot-clé `scripts` est maintenant utilisé à la place de l'option héritée `NodeCommand` dans l'espace de noms `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"
    }
  }
```

**Mode production et dépendances dev**  
Pour spécifier vos dépendances dans le fichier `package.json`, utilisez les attributs *dependencies* et *devDependencies*. L'attribut *dependencies* désigne les packages nécessaires à votre application en production. L'attribut *devDependencies* désigne les packages qui ne sont nécessaires que pour le développement local et les tests.

Si vous devez installer les packages *devDependencies*, définissez la propriété d'environnement NPM\_USE\_PRODUCTION sur `false`. Avec ce paramètre, nous n'utiliserons pas les options ci-dessus lors de l'exécution de npm install. Ainsi, les packages *devDependencies* seront installés.

## Inclusion des dépendances Node.js dans un répertoire node\_modules
<a name="nodejs-platform-nodemodules"></a>

Pour déployer les packages de dépendances sur des instances d'environnement avec votre code d'application, incluez-les dans un répertoire nommé `node_modules` à la racine de la source de votre projet. Pour en savoir plus, consultez la section [Téléchargement et installation de packages localement sur](https://docs.npmjs.com/downloading-and-installing-packages-locally) le site Web de *npm Docs*. 

[Lorsque vous déployez un `node_modules` répertoire dans une version AL2023/AL2 Node.jsplatform, Elastic Beanstalk part du principe que vous fournissez vos propres packages de dépendances et évite d'installer les dépendances spécifiées dans un fichier package.json.](#nodejs-platform-packagejson) Node.jsrecherche les dépendances dans le `node_modules` répertoire. Pour en savoir plus, consultez la section [Chargement à partir des dossiers node\_modules](https://nodejs.org/api/modules.html#modules_loading_from_node_modules_folders) dans la documentation Node.js.

**Note**  
Si vous rencontrez des problèmes de déploiement lors de l'exécution d'Elastic Beanstalk `npm install`, pensez à utiliser l'approche décrite dans cette rubrique pour contourner le problème pendant que vous étudiez le problème.   
 

### Considérations relatives à Node.js sur Amazon Linux 2
<a name="nodejs-al2-considerations"></a>

Lisez cette section si vous utilisez une branche de plateforme *Node.js* exécutée sur *Amazon Linux 2*.

#### Considérations relatives à Node.js sur Amazon Linux 2
<a name="nodejs-al2-considerations-detail"></a>

**Note**  
Les informations contenues dans cette rubrique s'appliquent aux branches de Node.js plate-forme exécutées sur Amazon Linux 2. Le contenu décrit ici AL2 des fonctionnalités et des comportements spécifiques qui diffèrent de AL2023.

**Variations de commande**  
Les options de commande varient en fonction de la version de npm incluse dans la branche de plate-forme Amazon Linux 2 sur laquelle votre application s'exécute.
+ npm v6 – Elastic Beanstalk installe les dépendances en mode production par défaut. Il utilise la commande `npm install --production`. 
+ npm v7 ou ultérieure – Elastic Beanstalk omet les *devDependencies*. Il utilise la commande `npm install --omit=dev`.

Les deux commandes listées ci-dessus n'installent pas les packages qui sont des *devDependencies*. 

**Protocoles SSH et HTTPS pour les dépendances Git**  
À compter de la sortie de la plateforme Amazon Linux 2 du 7 mars 2023, vous pouvez utiliser les protocoles SSH et HTTPS pour récupérer des packages depuis un référentiel Git. La branche de plateforme Node.js 16 prend en charge les protocoles SSH et HTTPS. La branche Node.js 14 ne prend en charge que le protocole HTTPS.

**Example package.json – Node.js 16 prend en charge les protocoles HTTPS et 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"
    }
```

**Versions et plages de versions**  
Utilisez le mot-clé `engines` du fichier `package.json` pour spécifier la version de Node.js que vous souhaitez que votre application utilise. Vous pouvez également spécifier une plage de versions à l'aide de la notation npm. Pour en savoir plus sur la syntaxe des plages de versions, consultez la section [Gestion sémantique des versions à l'aide de npm](https://nodejs.dev/learn/semantic-versioning-using-npm) sur le site web de Node.js. Le mot-clé `engines` du fichier Node.js `package.json` remplace l'option `NodeVersion` héritée dans l'espace de noms `aws:elasticbeanstalk:container:nodejs`.

**Important**  
La fonctionnalité permettant de spécifier des plages de versions n'est pas disponible pour les branches de la plateforme Node.js exécutées sur AL2023. Nous ne prenons en charge qu'une seule version de Node.js au sein d'une branche Node.js spécifique sur AL2023. Si votre fichier `package.json` spécifie une plage de versions, nous l'ignorerons et utiliserons par défaut la version de la branche de plateforme de Node.js.

**Example `package.json` - Version Node.js unique**  

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

**Example `package.json` - Gamme de versions Node.js**  

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

Lorsqu'une plage de versions est indiquée, Elastic Beanstalk installe la dernière version de Node.js à la disposition de la plateforme dans cette plage. Dans cet exemple, la plage indique que la version doit être supérieure ou égale à la version 10, mais inférieure à la version 11. Par conséquent, Elastic Beanstalk installe la dernière version Node.js de 10.x.y, disponible sur la [plateforme prise en charge](https://docs.aws.amazon.com/elasticbeanstalk/latest/platforms/platforms-supported.html#platforms-supported.nodejs).

Sachez que vous ne pouvez spécifier qu'une version de Node.js qui correspond à votre branche de plateforme. Par exemple, si vous utilisez la branche de plateforme Node.js 16, vous ne pouvez spécifier qu'une version 16.x.y de Node.js. Vous pouvez utiliser les options de plage de versions prises en charge par npm pour offrir plus de flexibilité. Pour les versions Node.js valides pour chaque branche de plateforme, consultez [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) dans le guide *Plateformes AWS Elastic Beanstalk *.

**Note**  
Lorsque la prise en charge de la version de Node.js que vous utilisez est supprimée de la plateforme, vous devez modifier ou supprimer le paramètre de version de Node.js avant de procéder à une [mise à jour de la plateforme](using-features.platform.upgrade.md). Cela peut se produire lorsqu'une faille de sécurité est identifiée pour une ou plusieurs versions de Node.js  
Lorsque cela se produit, toute tentative de mise à jour vers une nouvelle version de la plateforme qui ne prend pas en charge la version Node.js configurée échoue. Pour éviter de créer un nouvel environnement, modifiez le paramètre de version de Node.js dans `package.json` sur une version de Node.js qui est prise en charge à la fois par l'ancienne version de la plateforme et par la nouvelle. Vous avez la possibilité de spécifier une plage de versions Node.js qui inclut une version prise en charge, comme décrit plus haut dans cette rubrique. Vous pouvez également supprimer le paramètre, puis déployer le nouveau bundle source.