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 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_modules folders
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
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 ter mais informações, consulte Incluir dependências do Node.js em um diretório node_modules.
Especificar as dependências do Node.js com um arquivo package.json
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
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
.
exemplo 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.
O Elastic Beanstalk executa npm install
como usuário do aplicativo da web com os seguintes comandos. As opções de comando variam dependendo da versão npm incluída na ramificação da plataforma em que 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.
Se você precisar instalar os pacotes devDependencies, defina a propriedade de ambiente NPM_USE_PRODUCTION comofalse
. Com esta configuração, não usaremos as opções acima ao executar o npm install. Isso resultará na instalação dos pacotes devDependencies.
SSH e HTTPS
A partir do lançamento da plataforma Amazon Linux 2 de 7 de março de 2023, você também 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.
exemplo 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
Importante
O recurso para especificar intervalos de versões não está disponível para ramificações da plataforma Node.js em execução no AL2023. Oferecemos suporte apenas a uma versão do Node.js em uma ramificação específica do Node.js no 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.
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 npmengines
no arquivo package.json
do Node.js substitui a opção herdada NodeVersion
no namespace aws:elasticbeanstalk:container:nodejs
.
exemplo package.json
: versão única do Node.js
{
...
"engines": { "node" : "14.16.0" }
}
exemplo 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.
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 Node.js 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. 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.jspackage.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.
Incluir dependências do Node.js em um diretório node_modules
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
Quando você implanta um diretório node_modules
em uma versão da plataforma Node.js AL2023/AL2, o Elastic Beanstalk assume que você está fornecendo seus próprios pacotes de dependência e evita instalar dependências especificadas em um arquivo pacote.json. O Node.js procura dependências no diretório node_modules
. Para obter mais informações, consulte Loading from node_modules Folders
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.