

Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.

# Configurazione delle dipendenze dell'applicazione su Elastic Beanstalk
<a name="nodejs-platform-dependencies"></a>

L'applicazione potrebbe avere dipendenze su alcuni moduli Node.js, come quelli specificati nelle istruzioni `require()`. Questi moduli sono archiviati in una directory `node_modules`. Quando l'applicazione viene eseguita, Node.js carica i moduli da questa directory. Per ulteriori informazioni, consulta [Caricamento dalle cartelle node\$1modules](https://nodejs.org/api/modules.html#modules_loading_from_node_modules_folders) nella documentazione di Node.js.

È possibile specificare queste dipendenze del modulo utilizzando un file `package.json`. Se Elastic Beanstalk rileva questo file e non è presente una directory `node_modules`, Elastic Beanstalk esegue `npm install` come utente *webapp*. Il comando `npm install` installa le dipendenze nella directory `node_modules`, che Elastic Beanstalk crea in precedenza. Il comando `npm install` accede ai pacchetti elencati nel file `package.json` dal registro pubblico di npm o da altre posizioni. Per ulteriori informazioni, consulta il sito Web della [documentazione di npm](https://docs.npmjs.com/about-the-public-npm-registry). 

Se Elastic Beanstalk rileva la directory `node_modules`, allora non esegue `npm install` anche se esiste un file `package.json`. Elastic Beanstalk presuppone che i pacchetti di dipendenza siano disponibili nella directory `node_modules` perché Node.js possa accedere ed eseguire il caricamento.

Nelle sezioni seguenti vengono fornite ulteriori informazioni sulla definizione delle dipendenze tra moduli Node.js per l'applicazione.

**Nota**  
Se quando Elastic Beanstalk esegue `npm install` si verificano dei problemi di implementazione, prendi in considerazione un approccio alternativo. Includi la directory `node_modules` con i moduli di dipendenza nel bundle di origine dell'applicazione. In questo modo è possibile aggirare i problemi relativi all'installazione delle dipendenze dal registro pubblico di npm mentre si esamina il problema. Poiché i moduli di dipendenza provengono da una directory locale, ciò potrebbe anche aiutare a ridurre i tempi di implementazione. Per ulteriori informazioni, consulta [Inclusione delle dipendenze Node.js in una directory node\$1modules](#nodejs-platform-nodemodules)

## Specifica delle dipendenze Node.js con un file package.json
<a name="nodejs-platform-packagejson"></a>

Utilizza un file `package.json` nella root fonte del progetto per specificare i pacchetti di dipendenza e per fornire un comando start. Quando è presente un file `package.json` e una directory `node_modules` non è presente nella root dell'origine del progetto, Elastic Beanstalk esegue `npm install` come utente *webapp* per installare le dipendenze dal registro pubblico di npm. Elastic Beanstalk utilizza anche il comando `start` per avviare l'applicazione. Per ulteriori informazioni sul file `package.json`, consulta [Specifica delle dipendenze in un file `package.json`](https://docs.npmjs.com/specifying-dependencies-and-devdependencies-in-a-package-json-file) sul sito Web della *documentazione di npm*. 

Usa la parola chiave `scripts` per dare un comando di avvio. La parola chiave `scripts` viene ora utilizzata al posto dell'opzione `NodeCommand` legacy nello spazio dei nomi `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"
    }
  }
```

**Dipendenze tra modalità di produzione e sviluppo**  
Per specificare le dipendenze nel file `package.json`, usa gli attributi *dependencies* e *devDependencies*. L'attributo *dependencies* indica i pacchetti richiesti dall'applicazione in produzione. L'attributo *devDependencies* indica i pacchetti necessari solo per lo sviluppo e il test locali.

Se è necessario installare i pacchetti *devDependencies*, imposta la proprietà di ambiente NPM\$1USE\$1PRODUCTION su `false`. Con questa impostazione, durante l'esecuzione di npm install non verranno utilizzate le opzioni precedenti. Ciò comporterà l'installazione dei pacchetti *devDependencies*.

## Inclusione delle dipendenze Node.js in una directory node\$1modules
<a name="nodejs-platform-nodemodules"></a>

Per distribuire pacchetti di dipendenza nelle istanze di ambiente insieme al codice dell'applicazione, includili in una directory denominata `node_modules` nella directory root fonte del progetto. Per ulteriori informazioni, consulta [Download e installazione dei pacchetti in locale](https://docs.npmjs.com/downloading-and-installing-packages-locally) sul sito Web della *documentazione di npm*. 

[Quando distribuisci una `node_modules` directory in una versione della AL2 Node.js piattaforma AL2023/, Elastic Beanstalk presume che tu stia fornendo i tuoi pacchetti di dipendenze ed evita di installare le dipendenze specificate in un file package.json.](#nodejs-platform-packagejson) Node.jscerca le dipendenze nella directory`node_modules`. Per ulteriori informazioni, consulta [Caricamento dalle cartelle node\$1modules](https://nodejs.org/api/modules.html#modules_loading_from_node_modules_folders) nella documentazione di Node.js.

**Nota**  
Se quando Elastic Beanstalk esegue `npm install` si verificano problemi di implementazione, considera l'utilizzo dell'approccio descritto in questo argomento come soluzione alternativa mentre analizzi il problema.   
 

### Considerazioni per Node.js su Amazon Linux 2
<a name="nodejs-al2-considerations"></a>

Leggi questa sezione se utilizzi un ramo della piattaforma *Node.js* in esecuzione su *Amazon Linux 2*.

#### Considerazioni per Node.js su Amazon Linux 2
<a name="nodejs-al2-considerations-detail"></a>

**Nota**  
Le informazioni contenute in questo argomento si applicano ai rami Node.js della piattaforma in esecuzione su Amazon Linux 2. Il contenuto qui descrive caratteristiche e comportamenti AL2 specifici che differiscono da. AL2023

**Varianti dei comandi**  
Le opzioni di comando variano a seconda della versione di npm inclusa nel ramo della piattaforma Amazon Linux 2 su cui viene eseguita l'applicazione.
+ npm v6: per impostazione predefinita, Elastic Beanstalk installa le dipendenze in modalità di produzione. Usa il comando `npm install --production`. 
+ npm v7 o superiore: Elastic Beanstalk omette *devDependencies*. Usa il comando `npm install --omit=dev`.

Entrambi i comandi sopra elencati non installano i pacchetti che sono *devDependencies*. 

**Protocolli SSH e HTTPS per le dipendenze Git**  
A partire dalla versione della piattaforma Amazon Linux 2 del 7 marzo 2023, puoi utilizzare i protocolli SSH e HTTPS per recuperare i pacchetti da un repository Git. La ramificazione della piattaforma Node.js 16 supporta entrambi i protocolli SSH e HTTPS. Node.js 14 supporta solo il protocollo HTTPS.

**Example package.json: Node.js 16 supporta sia HTTPS che 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"
    }
```

**Versioni e gamme di versioni**  
Utilizza la parola chiave `engines` nel file `package.json` per specificare la versione di Node.js che desideri venga usata dalla tua applicazione. È inoltre possibile specificare un intervallo di versioni utilizzando la notazione npm. Per ulteriori informazioni sulla sintassi per gli intervalli di versioni, consulta [Controllo delle versioni della semantica tramite npm](https://nodejs.dev/learn/semantic-versioning-using-npm) sul sito Web di Node.js. La parola chiave `engines` nel file `package.json` di Node.js sostituisce l'opzione `NodeVersion` legacy nello spazio dei nomi `aws:elasticbeanstalk:container:nodejs`.

**Importante**  
La funzionalità per specificare gli intervalli di versioni non è disponibile per i rami della piattaforma Node.js in esecuzione. AL2023 Supportiamo solo una versione di Node.js all'interno di uno specifico ramo Node.js su AL2023. Se il file `package.json` specifica un intervallo di versioni, lo ignoreremo e per impostazione predefinita verrà impostata la ramificazione della piattaforma di Node.js.

**Example `package.json`: la singola versione di Node.js**  

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

**Example `package.json`: la gamma di versioni di Node.js**  

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

Quando viene indicato un intervallo di versioni, Elastic Beanstalk installa nell'intervallo l'ultima versione Node.js disponibile sulla piattaforma. In questo esempio, l'intervallo indica che la versione deve essere maggiore o uguale alla versione 10, ma inferiore alla versione 11. Di conseguenza, Elastic Beanstalk installa l'ultima versione 10.x.y di Node.js, disponibile sulla [piattaforma supportata](https://docs.aws.amazon.com/elasticbeanstalk/latest/platforms/platforms-supported.html#platforms-supported.nodejs).

Tieni presente che è possibile specificare solo una versione di Node.js corrispondente al ramo della piattaforma. Ad esempio, se utilizzi la ramificazione della piattaforma Node.js 16, sarà possibile specificare solo una versione 16.x.y di Node.js. È possibile utilizzare le opzioni dell'intervallo di versioni supportate da npm, per consentire una maggiore flessibilità. Per le versioni valide di Node.js per ogni ramo della piattaforma, consulta [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) nella guida *Piattaforme AWS Elastic Beanstalk *.

**Nota**  
Quando il supporto della versione di Node.js in uso viene rimosso dalla piattaforma, è necessario modificare o rimuovere l'impostazione della versione di Node.js prima di eseguire un [aggiornamento della piattaforma](using-features.platform.upgrade.md). Questo può verificarsi quando viene rilevata una vulnerabilità di sicurezza per una o più versioni di Node.js  
Quando ciò si verifica, i tentativi di aggiornamento della piattaforma a una nuova versione che non supporta la versione di Node.js configurata avranno esito negativo. Per evitare la necessità di creare un nuovo ambiente, modificare l'impostazione della versione Node.js in `package.json` a una versione Node.js supportata sia dalla vecchia versione della piattaforma che da quella nuova. È possibile specificare un intervallo di versioni Node.js che include una versione supportata, come descritto in precedenza in questo argomento. Hai anche la possibilità di rimuovere l'impostazione e quindi distribuire il nuovo bundle fonte.