Fazer deploy de um app Express
A App Platform oferece três runtimes para aplicações Express: Node.js, Bun e Deno. Cada runtime tem seu próprio gerenciador de pacotes, comando de build, comando de inicialização e arquivo de configuração.
Build da aplicação Copiar link
Node.js Copiar link
A Hostman utiliza o seguinte ambiente ao fazer o build de um app Express:
- Node.js: 20, 22 ou 24
- npm
- yarn
- PM2 (última versão)
A aplicação é compilada na raiz do repositório ou no diretório especificado no campo Project directory path.
A Hostman executa os seguintes comandos durante o build:
apt install -y nodejs --fix-missing
npm install pm2@latest -g
npm install expressSe o projeto tiver package.json e usar yarn, também será executado:
apt-get remove -y cmdtest yarn
npm install --global yarn
cd /<DIRETÓRIO> && yarn install --check-filesNos outros casos em que o package.json estiver presente:
cd /<DIRETÓRIO> && npm install<DIRETÓRIO> é o caminho até o diretório com o package.json.
O app é executado usando o PM2 process manager.
O comando de start padrão é:
pm2 start --no-daemon app.jsO arquivo de inicialização da aplicação (no exemplo acima, app.js) pode se chamar app.js, server.js, main.js ou index.js.
Deno Copiar link
A App Platform executa o build no diretório raiz do repositório ou no diretório que você definir no campo Caminho do diretório do projeto. As seguintes versões do Deno estão disponíveis:
- 2.7.14
- 2.7.10
- 2.6.0
Aplicações Deno não precisam de um passo de build separado. A App Platform executa a aplicação diretamente em um container com Deno, portanto o comando deno compile não é utilizado em um deploy padrão.
A App Platform utiliza o seguinte comando para iniciar a aplicação:
deno run --allow-net --allow-env --allow-read --allow-sys --allow-ffi main.tsOutra opção é definir o comando de inicialização como uma tarefa:
deno task startAo executar deno task start, a App Platform aciona a tarefa start definida no arquivo deno.json. Defina-a da seguinte forma:
"tasks": {
"start": "deno run --allow-net --allow-env --allow-read --allow-sys --allow-ffi main.ts"
}Neste exemplo, o arquivo de entrada da aplicação é main.ts. Atualize o caminho conforme a estrutura do seu projeto.
Permissões
O Deno exige que você declare explicitamente quais permissões a aplicação precisa. Inclua as flags correspondentes ao executar a aplicação:
--allow-net— requisições de rede--allow-read— leitura do sistema de arquivos--allow-write— escrita no sistema de arquivos--allow-env— acesso a variáveis de ambiente--allow-run— execução de subprocessos--allow-ffi— carregamento de bibliotecas nativas (FFI)--allow-hrtime— timers de alta resolução--allow-sys— leitura de informações do sistema (SO, CPU etc.)--allow-allou-A— concede todas as permissões de uma vez--watch— reinicia a aplicação automaticamente ao detectar alterações nos arquivos
Por exemplo, se a aplicação realiza requisições de rede, lê variáveis de ambiente e acessa o sistema de arquivos:
deno run --allow-net --allow-env --allow-read src/index.tsBun Copiar link
A App Platform executa o build no diretório raiz do repositório ou no diretório que você definir no campo Caminho do diretório do projeto. O Bun é utilizado tanto como gerenciador de pacotes quanto como runtime.
Para realizar o build, a App Platform executa:
bun buildPara iniciar a aplicação, a App Platform executa:
bun run startEsse comando aciona o script start definido no arquivo package.json. Aponte-o para o arquivo de entrada da aplicação:
"scripts": {
"start": "bun run src/main.ts"
}Neste exemplo, o arquivo de entrada da aplicação é src/main.ts. Atualize o caminho conforme a estrutura do seu projeto.
Troubleshooting Copiar link
Deploy falhou Copiar link
Se houver problemas no deploy, primeiro confira o log de deploy. Ele ajuda a identificar em qual etapa ocorreu o erro.
Na maioria dos casos, os problemas estão relacionados ao comando de start.
- Certifique-se de que tudo funciona localmente com
pm2. - Verifique se todos os módulos necessários estão listados no
package.json.
Please add build instructions to your script section in package.json Copiar link
O problema é que o comando yarn build acessa o package.json, e se o valor da diretiva build não estiver especificado, ocorre um erro.
Para corrigir isso, adicione as diretivas necessárias na seção scripts do package.json. Leia mais sobre o uso de scripts aqui.