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á.
Configurando as dependências do seu aplicativo no Elastic Beanstalk
Seu aplicativo pode ter dependências de alguns Node.js módulos, como os que você especifica nas require()
instruções. Esses módulos são armazenados em um diretório node_modules
. Quando seu aplicativo é executado, Node.js carrega os módulos desse diretório. Para obter mais informações, consulte Carregando das pastas node_modules
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 presume que os pacotes de dependências estejam disponíveis no diretório de node_modules
Node.js para acessar e carregar.
As seções a seguir fornecem mais informações sobre como estabelecer seu Node.js dependências do módulo para seu aplicativo.
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 Incluindo Node.js dependências em um diretório node_modules
Especificando Node.js dependências 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 package.json
arquivo, use as dependências e devDependenciesos atributos. O atributo dependências designa os pacotes exigidos pelo seu aplicativo em produção. O devDependenciesatributo designa pacotes que são necessários somente para desenvolvimento e teste 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 o. devDependencies Ele usa o comando
npm install --omit=dev
.
Ambos os comandos listados acima não instalam os pacotes que estão devDependencies.
Se você precisar instalar os devDependenciespacotes, defina a propriedade de PRODUCTION ambiente NPM USE _ _ comofalse
. Com esta configuração, não usaremos as opções acima ao executar o npm install. Isso resultará na instalação dos devDependenciespacotes.
SSHe HTTPS
A partir do lançamento da plataforma Amazon Linux 2 em 7 de março de 2023, você também pode usar os HTTPS protocolos SSH e para recuperar pacotes de um repositório Git. Ramificação da plataforma Node.js 16 suporta os HTTPS protocolos SSH e. Node.js 14 suporta apenas o HTTPS protocolo.
exemplo package.json — Node.js 16 suporta ambos 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 executadas em AL2 023. Só oferecemos suporte a uma versão do Node.js em uma ramificação específica do Node.js em AL2 023. 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 engines
palavra-chave no package.json
arquivo para especificar a Node.js versão que você deseja que seu aplicativo use. Você também pode especificar um intervalo de versões usando a notação npm. Para obter mais informações sobre a sintaxe dos intervalos de versões, consulte Controle de versão semântico usandoengines
palavra-chave no Node.js package.json
o arquivo substitui a NodeVersion
opção legada no aws:elasticbeanstalk:container:nodejs
namespace.
exemplo package.json
— Solteiro Node.js versão
{
...
"engines": { "node" : "14.16.0" }
}
exemplo package.json
– Node.js gama de versões
{
...
"engines": { "node" : ">=10 <11" }
}
Quando um intervalo de versões é indicado, o Elastic Beanstalk instala a versão mais recente Node.js versão que a plataforma tem disponível dentro da faixa. 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 o mais recente Node.js versão 10.x.y, que está disponível na plataforma compatível.
Esteja ciente de que você só pode especificar um Node.js versão que corresponde à ramificação da sua plataforma. Por exemplo, se você estiver usando o Node.js ramificação de 16 plataformas, você só pode especificar um 16.x.y Node.js versão. Você pode usar as opções de intervalo de versões suportadas pelo npm para permitir mais flexibilidade. Para válido Node.js versões para cada ramificação da plataforma, consulte Node.jsno guia AWS Elastic Beanstalk de plataformas.
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.
Incluindo Node.js dependências 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 node_modules
diretório em um AL2 023/ AL2 Node.js versão da plataforma, o Elastic Beanstalk presume que você está fornecendo seus próprios pacotes de dependências e evita a instalação de dependências especificadas em um arquivo package.json. Node.js procura dependências no node_modules
diretório. Para obter mais informações, consulte Carregando das pastas node_modules
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.