A primeira implantação do Heroku falhou `código de erro = H10`

86

Implantei meu aplicativo no Heroku. É um aplicativo node.js + express + socket.io e este é o package.jsonarquivo

{
  "name": "game_test",
  "author": "Ilya",
  "description": "A test app for our board game",
  "version": "0.0.1",
  "private": true,
  "scripts": {
    "start": "node app"
  },
  "dependencies": {
    "express": "3.0.6",
    "jade": "*",
    "socket.io" : "*"
  },
 "engines": {
      "node": "0.8.14"
  }
}

Este é o registro que recebo:

heroku[router]: at=error code=H10 desc="App crashed" method=GET path=/ host=game-test-1.herokuapp.com fwd=37.26.146.185 dyno= queue= wait= connect= service= status=503 bytes=
heroku[router]: at=error code=H10 desc="App crashed" method=GET path=/favicon.ico host=game-test-1.herokuapp.com fwd=37.26.146.185 dyno= queue= wait= connect= service= status=503 bytes=

O que isso significa?

ilyo
fonte
4
"App travou" tem o significado óbvio: seu app travou. Procure mais em seus registros para ver o porquê, ou heroku restartinicie-o novamente para que você possa vê-lo travar novamente.
willglynn
Eu estou tendo o mesmo problema. Como você consertou isso?
Martin Schaer
6
existe 1 resposta para esta questão que já recebeu 6 votos positivos até agora ... por favor, selecione essa resposta como a resposta correta para esta questão.
Rakib de
oi @ilyo! Você poderia aprovar minha resposta sobre isso, por favor? Tem 7 anos e continua ajudando as pessoas :) Obrigado!
Martin Schaer

Respostas:

192

Solução encontrada para mim aqui: Erro Heroku + node.js (o processo da Web falhou ao vincular a $ PORT em 60 segundos após o lançamento)

No meu caso, meu aplicativo travou porque eu estava configurando fortemente a PORTA, ao invés de usar a porta que o heroku dinamicamente define, que pode ser acessada com process.env.PORT

app.listen(process.env.PORT || 3000, function(){
  console.log("Express server listening on port %d in %s mode", this.address().port, app.settings.env);
});
Martin Schaer
fonte
1
Bem, obrigado por esta solução. Eu tive exatamente o mesmo problema, e sua resposta resolveu meu problema depois de algumas horas de pesquisas.
LukyVj
2
Mesmo 2 anos depois, este post me ajudou quando o Heroku estava quebrando. Obrigado @Martin Schaer.
Rey Bango
1
Exatamente, era meu problema com a bota de primavera java. Obrigado
Mohy Eldeen
2
Atualmente, a maioria de nós está usando o ES6. Portanto, a mesma resposta também pode ser escrita no ES6 usando a função de seta. app.listen (process.env.PORT || 3000, () => {console.log ("Servidor expresso escutando na porta% d no modo% s", this.address (). porta, app.settings.env) ;});
Hemadri Dasari
Isso aconteceu comigo, o que foi causado ao tentar importar uma biblioteca que não estava em meu arquivo package.json.
Yvan Pearson
47

Acabei de ter um problema parecido com meu aplicativo, peguei o problema após uma migração do DB, depois de tentar várias opções, a que me ajudou foi esta:

heroku restart

(Usando o cinto de ferramentas Heroku para mac)

clarenswd
fonte
1
Eu estava recebendo o mesmo código de erro e o meu costumava funcionar, mas isso de repente começou a acontecer. O comando "reinicializar heroku" esclareceu isso para mim.
Mike de
A mesma coisa aconteceu comigo depois de adicionar New Relic. Reiniciar corrigiu meu problema
Kris Hollenbeck
5

No meu caso, encontrei o mesmo erro porque há diferença de versão de node e npm em minha máquina local e definida na versão package.json.

"engines": {
  "node": "0.8",
  "npm": "1.2.x"
}

quando eu verifico usando

node --version : v0.10.41
npm --version : 1.4.29

quando eu atualizo meu package.json para

 "engines": {
  "node": "0.10.41",
  "npm": "1.4.29"
}

Funciona bem :)

Mahesh Singh Chouhan
fonte
5

no meu caso, adicionando process.env.PORT || 3000ao meu script de servidor http, resolvido. Meu log do heroku relatou erro 'H20' e status 503 http.

Ewertom Moraes
fonte
5

Eu tive esse problema, o único problema era meu Procfile estava assim

web : node index.js

e eu mudei para

web:node index.js

o único problema eram os espaços

Arian Nargesi
fonte
3

No meu caso, meu Procfile estava apontando para o arquivo errado (bot.js que eu usei anteriormente), então, assim que o atualizei, o erro desapareceu.

Sina Meraji
fonte
3

ao usar o hapi18, descubro tirar o campo "host" e definir a porta para:

port: process.env.PORT || 5000 fez o truque.

Littlebotrj
fonte
2

Verifique também sua conexão com o banco de dados. Esqueci de mudar minha conexão de banco de dados de localhost e isso travou meu aplicativo assim que foi enviado para o heroku.

lindsaymacvean
fonte
2

Enfrentei esse mesmo problema e nenhuma das respostas acima me ajudou. O que eu fiz foi executar:

node --version

e no package.json adicione a seção engines com sua versão do nó:

{
  "name": "myapp",
  "description": "a really cool app",
  "version": "1.0.0",
  "engines": {
    "node": "6.11.1"
  }
}
Martin De Simone
fonte
2

Tópico antigo, mas eu corrijo esse problema definindo a constante PORT para process.env.PORT ||

Por alguma razão estranha, ele queria pesquisar Env primeiro.

Isaac Frank
fonte
1

No meu próprio caso, recebi este erro porque me recuso a adicionar um Procfile ao meu app node js e meu "main": "app.js" estava inicialmente apontando para outro arquivo js como principal. então, fazer essas mudanças conserta-o para mim

Baba da floresta
fonte
1

Eu tive um erro de digitação

const PORT = process.env.PORT||'8080';

costumava ser

const PORT = process.env.port||'8080';

Omar
fonte
1

No meu caso, esqueci de definir o env do banco de dados para implantação. você pode definir env por este comando (estou usando mLab para o servidor MongoDB)

config heroku: set MONGO_URI = 'mongodb: // endereço'

minjun youn
fonte
1

Para mim, era Package.json, estava vazio de dependências, embora eu achasse que os tinha instalado .. então eu tive que reinstalá-los com a opção --save no final e verificar se eles foram adicionados ao package.json .. e então aperte novamente e funcionou.

romano
fonte
1

Se você iniciar o servidor de nó localmente nodemon, como eu fiz, e ele funcionar localmente, tente npm start. O Nodemon não estava me dizendo erros, mas o npm start me disse muitos deles de uma forma compreensível e então eu poderia resolvê-los seguindo outros posts aqui. Espero que ajude alguém.

Erik
fonte
1

No meu caso, não havia nenhum comando de início na seção de script do package.jsonarquivo. Quando criei o package.jsonarquivo com npm init, não criei um comando de script de início. Então fui para o package.jsonarquivo, em scripts adicionei uma nova entrada:

 "scripts": {
    "start": "node index.js"
  },

Salvei e carreguei no Heroku e funcionou

Mahmoud Awad
fonte
0

A senha continha um% quebrou para mim.

Jack Stone
fonte
0

Minha porta foi definida para config.httpPortqual resolve 80. Eu consertei fazendo o seguinte:

const PORT = process.env.PORT || config.httpPort;

app.listen(PORT, ...)

Muito obrigado, me desperdiçou muitas horas na noite passada.

Tamal Anwar Chowdhury
fonte
0

O código de erro H10 pode significar muitas coisas diferentes. No meu caso, a primeira vez foi porque eu não sabia que o Heroku não é compatível com o Sqlite3, a segunda vez foi porque acidentalmente enviei uma atualização com o Google Analytics trabalhando no desenvolvimento e também na produção.

Trevor Hauck
fonte
0

Recebi o mesmo erro acima como "app crashed" e H10 e os logs do app heroku não estão mostrando muitas informações relacionadas aos motivos da mensagem de erro. Então eu reiniciei o dynos no heroku e ele mostrou o erro dizendo chave adicional em um dos arquivos index.js em minha configuração. O problema foi corrigido depois de removido e reimplantado o aplicativo no heroku.

Praveen
fonte
0

Tópico mais antigo, mas para mim não configurei meu .envvar no console do Heroku.

Josh Lavely
fonte
0

eu estava usando o body-Parser que lança exceção

const bodyParser = require('body-Parser')    
//Bodyparser Middleware
app.use(bodyparser.json())

em vez de usar

    //Bodyparser Middleware
    app.use(express.json())

isso resolveu meu problema

S.Sid
fonte
0

Quero registrar aqui qual foi a minha solução para este erro que era um arquivo simples não atualizado para o Github.

Eu tenho um projeto de pilha completa e meus arquivos são estruturados em diretório raiz para back-end e cliente para front-end (estou usando React.js). Tudo se resumia ao fato de que eu estava enviando por engano a pasta do cliente apenas para o Github e todas as minhas alterações que tinham um erro (faltando uma vírgula na instância de um objeto em meu index.js) não foram atualizadas no lado do backend. Como este Heroku busca todas as atualizações do Repositório Github, não consegui acessar meu servidor e o erro persistiu. Então tudo que eu tive que fazer foi enviar e enviar para o diretório raiz e atualizar todas as mudanças do projeto e tudo voltou a funcionar novamente.

Luis Febro
fonte
0

No meu caso eu tinha code = H10 e status = 503 porque meu Procfile:

web: node build/server.js

e incluí / construí no .gitignore

Donovant
fonte
0

Luto com o mesmo erro por horas, mas consegui resolvê-lo. Instalei o multer e o aws-sdk como devDependencies por engano, em vez de apenas dependências. Portanto, qualquer pessoa que tiver o mesmo erro, basta verificar novamente o arquivo package.json.

Além disso, uma pequena dica para a propriedade do motor em package.json.

enter code here
//The greater or equal operators will make sure that you use the right node 
//version 
//even if your current node is greater version than npm node

"engines": {
"node": ">= 0.8.14"
},


//insted of
"engines": {
  "node": "0.8.14"
}
Taulant Vokshi
fonte
0

Eu estava implantando o framework Django python quando recebi este erro porque esqueci de colocar o nome do meu aplicativo em web: gunicorn plaindjango.wsgi:application --log-file -vez deplaindjango

Talha Anwar
fonte