

As traduções são geradas por tradução automática. Em caso de conflito entre o conteúdo da tradução e da versão original em inglês, a versão em inglês prevalecerá.

# Configurar dependências da sua aplicação no Elastic Beanstalk
<a name="nodejs-platform-dependencies"></a>

A aplicação pode ter dependências em alguns módulos Node.js, como os que você especifica nas instruções `require()`. Esses módulos são armazenados em um diretório `node_modules`. Quando a aplicação é executada, o Node.js carrega os módulos desse diretório. Para obter mais informações, consulte [Loading from node\$1modules folders](https://nodejs.org/api/modules.html#modules_loading_from_node_modules_folders) (Carregar das pastas node\$1modules) na documentação do Node.js.

Você pode especificar essas dependências usando um arquivo `package.json`. Se o Elastic Beanstalk detectar esse arquivo e não houver um diretório `node_modules` presente, o Elastic Beanstalk executa `npm install` como usuário de *aplicativo da web*. O comando `npm install` instala as dependências no diretório `node_modules`, que o Elastic Beanstalk cria de antemão. O comando `npm install` acessa os pacotes listados no arquivo `package.json` do registro npm público ou outros locais. Para obter mais informações, consulte o site [npm Docs](https://docs.npmjs.com/about-the-public-npm-registry). 

Se o Elastic Beanstalk detectar o diretório `node_modules`, não executa o `npm install`, mesmo que exista um arquivo `package.json`. O Elastic Beanstalk pressupõe que os pacotes de dependências estejam disponíveis no diretório `node_modules` para o Node.js acessar e carregar.

As seções a seguir fornecem mais informações sobre como estabelecer as dependências do módulo Node.js para a aplicação.

**nota**  
Se você tiver algum problema de implantação quando o Elastic Beanstalk estiver executando o `npm install`, considere a adoção de uma abordagem alternativa. Inclua o diretório `node_modules` com os módulos de dependências no pacote de fontes da aplicação. Dessa forma você contorna os problemas de instalação das dependências do registro npm público enquanto você investiga o problema. Como a origem dos módulos de dependências é um diretório local, fazer isso também pode ajudar a reduzir o tempo de implantação. Para obter mais informações, consulte [Incluir dependências do Node.js em um diretório node\$1modules](#nodejs-platform-nodemodules).

## Especificar as dependências do Node.js com um arquivo package.json
<a name="nodejs-platform-packagejson"></a>

Use um arquivo `package.json` na raiz do código-fonte do projeto para especificar pacotes de dependência e para fornecer um comando para iniciar. Quando existe um arquivo `package.json` presente e não existe um diretório `node_modules` na raiz da origem do projeto, o Elastic Beanstalk executa `npm install` como usuário do *aplicativo da web* para instalar dependências do registro npm público. O Elastic Beanstalk também usa o comando `start` para iniciar a aplicação. Para obter mais informações sobre o arquivo `package.json`, consulte [Specifying dependencies in a `package.json` file](https://docs.npmjs.com/specifying-dependencies-and-devdependencies-in-a-package-json-file) (Especificar dependências em um arquivo ) no site *npm Docs*. 

Use a palavra-chave `scripts` para fornecer um comando para iniciar. Atualmente, a palavra-chave `scripts` é usada em vez da opção herdada `NodeCommand` no namespace `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 produção e dependências de desenvolvimento**  
Para especificar suas dependências no arquivo `package.json`, use os atributos *dependências* e *devDependencies*. O atributo *dependências* designa os pacotes exigidos pelo seu aplicativo em produção. O atributo *devDependencies* designa pacotes que são necessários apenas para desenvolvimento e testes locais.

Se você precisar instalar os pacotes *devDependencies*, defina a propriedade de ambiente NPM\$1USE\$1PRODUCTION como`false`. Com esta configuração, não usaremos as opções acima ao executar o npm install. Isso resultará na instalação dos pacotes *devDependencies*.

## Incluir dependências do Node.js em um diretório node\$1modules
<a name="nodejs-platform-nodemodules"></a>

Para implantar pacotes de dependência em instâncias de ambiente juntamente com o código da aplicação, inclua-os em um diretório chamado `node_modules` na raiz da fonte de seu projeto. Para obter mais informações, consulte [Downloading and installing packages locally](https://docs.npmjs.com/downloading-and-installing-packages-locally) (Baixar e instalar pacotes localmente) no site *npm Docs*. 

[Quando você implanta um `node_modules` diretório em uma versão da AL2 Node.js plataforma AL2023/, o Elastic Beanstalk presume que você está fornecendo seus próprios pacotes de dependências e evita instalar dependências especificadas em um arquivo package.json.](#nodejs-platform-packagejson) Node.jsprocura dependências no `node_modules` diretório. Para obter mais informações, consulte [Loading from node\$1modules Folders](https://nodejs.org/api/modules.html#modules_loading_from_node_modules_folders) (Carregar das pastas node\$1modules) na documentação do Node.js.

**nota**  
Se você tiver algum problema de implantação enquanto o Elastic Beanstalk estiver executando `npm install`, considere a abordagem descrita neste tópico como uma solução alternativa enquanto investiga o problema.   
 

### Considerações sobre o Node.js no Amazon Linux 2
<a name="nodejs-al2-considerations"></a>

Leia esta seção se você estiver usando uma ramificação da plataforma *Node.js* em execução no *Amazon Linux 2*.

#### Considerações sobre o Node.js no Amazon Linux 2
<a name="nodejs-al2-considerations-detail"></a>

**nota**  
As informações neste tópico se aplicam às ramificações Node.js da plataforma executadas no Amazon Linux 2. O conteúdo aqui descreve características e comportamentos AL2 específicos que diferem de AL2023.

**Variações de comando**  
As opções de comando variam de acordo com a versão do npm incluída na ramificação da plataforma Amazon Linux 2 na qual seu aplicativo é executado.
+ npm v6 — O Elastic Beanstalk instala dependências no modo de produção por padrão. Ele usa o comando `npm install --production`. 
+ npm v7 ou superior — O Elastic Beanstalk omite as *devDependencies*. Ele usa o comando `npm install --omit=dev`.

Ambos os comandos listados acima não instalam os pacotes que são *devDependencies*. 

**Protocolos SSH e HTTPS para dependências do Git**  
A partir do lançamento da plataforma Amazon Linux 2 de 7 de março de 2023, você pode usar os protocolos SSH e HTTPS para recuperar pacotes de um repositório Git. A ramificação da plataforma Node.js 16 suporta os protocolos SSH e HTTPS. Node.js 14 suporta somente o protocolo HTTPS.

**Example package.json —Node.js 16 suporta HTTPS e 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"
    }
```

**Versões e intervalos de versões**  
Use a palavra-chave `engines` no arquivo `package.json` para especificar a versão do Node.js que você deseja que a aplicação use. Você também pode especificar um intervalo de versões usando a notação npm. Para obter mais informações sobre a sintaxe para intervalos de versões, consulte [Semantic Versioning using npm](https://nodejs.dev/learn/semantic-versioning-using-npm) (Versionamento semântico usando o npm) no site Node.js. A palavra-chave `engines` no arquivo `package.json` do Node.js substitui a opção herdada `NodeVersion` no namespace `aws:elasticbeanstalk:container:nodejs`.

**Importante**  
O recurso para especificar intervalos de versões não está disponível para ramificações da plataforma Node.js em execução AL2023. Só oferecemos suporte a uma versão do Node.js em uma ramificação específica do Node.js em AL2023. Se o arquivo `package.json` especificar um intervalo de versões, ele será ignorado e a versão da ramificação da plataforma do Node.js será usada por padrão.

**Example `package.json`: versão única do Node.js**  

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

**Example `package.json`: intervalo de versões do Node.js**  

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

Quando um intervalo de versões é indicado, o Elastic Beanstalk instala a versão do Node.js mais recente que a plataforma tem disponível dentro do intervalo. Neste exemplo, o intervalo indica que a versão deve ser maior ou igual à versão 10, mas menor que a versão 11. Como resultado, o Elastic Beanstalk instala a versão mais recente do Node.js, a 10.x.y, disponível na [plataforma compatível](https://docs.aws.amazon.com/elasticbeanstalk/latest/platforms/platforms-supported.html#platforms-supported.nodejs).

Lembre-se de que você só pode especificar uma versão do Node.js que corresponda à ramificação da plataforma. Por exemplo, se você estiver usando a ramificação da plataforma Node.js 16, só poderá especificar uma versão 16.x.y do Node.js. Você pode usar as opções de intervalo de versões suportadas pelo npm para permitir mais flexibilidade. Para saber quais são as versões válidas do Node.js para cada ramificação da 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) no guia *Plataformas do AWS Elastic Beanstalk *.

**nota**  
Quando o suporte oferecido para a versão do Node.js que você estiver usando for removido da plataforma, será necessário alterar ou remover a configuração da versão do Node.js antes de fazer a [atualização da plataforma](using-features.platform.upgrade.md). Isso pode ocorrer quando uma vulnerabilidade de segurança é identificada para uma ou mais versões do Node.js.  
Nesse caso, ocorre uma falha na tentativa de atualizar para uma nova versão da plataforma não compatível com a versão do Node.js configurada. Para evitar a necessidade de criar um novo ambiente, altere a configuração da versão Node.js`package.json` para uma versão Node.js suportada pela versão antiga da plataforma e a nova. Você tem a opção de especificar um intervalo de versão Node.js que inclua uma versão suportada, conforme descrito anteriormente neste tópico. Você também tem a opção de remover a configuração e, em seguida, implantar o novo pacote de fonte.