La primera implementación de Heroku falló `código de error = H10`

86

Implementé mi aplicación en Heroku. Es una aplicación node.js + express + socket.io y este es el package.jsonarchivo

{
  "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 es el registro que obtengo:

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=

Qué significa eso?

ilyo
fuente
4
"Aplicación bloqueada" tiene el significado obvio: su aplicación bloqueó. Busque más en sus registros para ver por qué, o heroku restartpara iniciarlo nuevamente para que pueda verlo fallar nuevamente.
willglynn
Estoy teniendo el mismo problema. ¿Cómo lo arreglaste?
Martin Schaer
6
hay 1 respuesta a esta pregunta que ya ha recibido 6 votos a favor hasta ahora ... seleccione esa respuesta como la respuesta correcta de esta pregunta.
Rakib
hola @ilyo! ¿Podría aprobar mi respuesta sobre esto, por favor? Tiene 7 años y sigue ayudando a la gente :) ¡Gracias!
Martin Schaer

Respuestas:

192

Encontré una solución para mí aquí: Error de Heroku + node.js (el proceso web no se pudo vincular a $ PORT dentro de los 60 segundos posteriores al inicio)

En mi caso, mi aplicación se bloqueó porque era difícil configurar el PUERTO, en lugar de usar el puerto que heroku establece dinámicamente, al que se puede acceder con 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
fuente
1
Bueno, gracias por esta solución. Tuve exactamente el mismo problema, y ​​tu respuesta resolvió mi problema después de unas horas de investigaciones.
LukyVj
2
Incluso 2 años después, esta publicación me ayudó cuando Heroku estaba fallando. Gracias @Martin Schaer.
Rey Bango
1
Exactamente fue mi problema con el arranque de primavera de Java. Gracias
Mohy Eldeen
2
En estos días, la mayoría de nosotros usamos ES6. Entonces, la misma respuesta también se puede escribir en ES6 usando la función de flecha. app.listen (process.env.PORT || 3000, () => {console.log ("Servidor Express escuchando en el puerto% d en modo% s", this.address (). puerto, app.settings.env) ;});
Hemadri Dasari
Esto me sucedió, lo cual fue causado por intentar importar una biblioteca que no estaba en mi archivo package.json.
Yvan Pearson
47

Acabo de tener un problema similar con mi aplicación, tuve el problema después de una migración de la base de datos, después de probar muchas opciones, la que me ayudó fue esta:

heroku restart

(Usando el cinturón de herramientas de Heroku para mac)

clarenswd
fuente
1
Recibía el mismo código de error y el mío solía funcionar, pero esto de repente comenzó a suceder. El comando "reiniciar heroku" me aclaró esto.
Mike
Me pasó lo mismo después de agregar New Relic. Reiniciar solucionó mi problema
Kris Hollenbeck
5

En mi caso, encontré el mismo error porque hay una diferencia de versión del nodo y npm en mi máquina local y se define en la versión package.json.

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

cuando verifico el uso

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

cuando actualizo mi package.json a

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

Funciona bien :)

Mahesh Singh Chouhan
fuente
5

en mi caso, agregando process.env.PORT || 3000a mi script de servidor http, resuelto. Mi registro de heroku informó un error 'H20' y un estado http 503.

Ewertom Moraes
fuente
5

Tuve este problema, el único problema era que mi Procfile era así

web : node index.js

y me cambié a

web:node index.js

el único problema eran los espacios

Arian Nargesi
fuente
3

En mi caso, mi Procfile apuntaba al archivo incorrecto (bot.js que usé anteriormente), así que una vez que lo actualicé, el error desapareció.

Sina Meraji
fuente
3

al usar hapi18, encuentro que quito el campo "host" y configuro el puerto en:

port: process.env.PORT || 5000 Hizo el truco.

littlebotrj
fuente
2

También verifique la conexión de su base de datos. Olvidé cambiar la conexión de mi base de datos de localhost y esto bloqueó mi aplicación una vez que se envió a heroku.

lindsaymacvean
fuente
2

Enfrenté este mismo problema y ninguna de las respuestas anteriores me ayudó. Lo que hice fue ejecutar:

node --version

y en package.json agregue la sección de motores con la versión de su nodo:

{
  "name": "myapp",
  "description": "a really cool app",
  "version": "1.0.0",
  "engines": {
    "node": "6.11.1"
  }
}
Martín de Simone
fuente
2

Old Thread, pero soluciono este problema estableciendo la constante PORT en process.env.PORT ||

Por alguna extraña razón, quería buscar Env primero.

Isaac Frank
fuente
1

En mi propio caso, recibí este error porque me niego a agregar un Procfile a mi aplicación de nodo js y mi "main": "app.js" inicialmente apuntaba a otro archivo js como principal. Así que al hacer estos cambios, arreglame

Baba del bosque
fuente
1

Tuve un error tipográfico

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

solía ser

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

Omar
fuente
1

En mi caso, olvidé configurar el entorno de la base de datos para la implementación. puede configurar env con este comando (estoy usando mLab para el servidor MongoDB)

heroku config: set MONGO_URI = 'mongodb: // dirección'

minjun youn
fuente
1

Para mí, era Package.json, estaba vacío de las dependencias aunque pensé que las había instalado ... así que tuve que reinstalarlas con la opción --save al final y verificar que se agregaron al package.json ... y luego Empuje de nuevo y funcionó.

romano
fuente
1

Si inicia el servidor de nodo localmente nodemon, como lo hice yo, y funciona localmente, intente npm start. Nodemon me decía que no había errores, pero npm start me dijo muchos de ellos de una manera comprensible y luego pude resolverlos siguiendo otras publicaciones aquí. Espero que ayude a alguien.

Erik
fuente
1

En mi caso, no había un comando de inicio en la sección de script del package.jsonarchivo. Cuando creé el package.jsonarchivo con npm initno creé un comando de secuencia de comandos de inicio. Entonces fui al package.jsonarchivo, debajo de los scripts agregué una nueva entrada:

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

Lo guardé y lo cargó en Heroku y funcionó

Mahmoud Awad
fuente
0

La contraseña contenía un% la rompió para mí.

Jack Stone
fuente
0

Mi puerto se estableció en el config.httpPortque se resuelve en 80. Lo arreglé haciendo esto:

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

app.listen(PORT, ...)

Muchas gracias, anoche me perdí muchas horas.

Tamal Anwar Chowdhury
fuente
0

El código de error H10 podría significar muchas cosas diferentes. En mi caso, la primera vez fue porque no sabía que Heroku no es compatible con Sqlite3, la segunda vez fue porque accidentalmente empujé una actualización con Google Analytics trabajando tanto en desarrollo como en producción.

Trevor Hauck
fuente
0

Obtuve el mismo error anterior como "la aplicación se bloqueó" y el error H10 y los registros de la aplicación heroku no muestran mucha información relacionada con las razones del mensaje de error. Luego reinicié los dynos en heroku y luego mostró el error que decía una llave adicional en uno de los archivos index.js en mi configuración. El problema se solucionó una vez que se eliminó y se volvió a implementar la aplicación en heroku.

Praveen
fuente
0

Hilo más antiguo, pero para mí no configuré mis .envvars en la consola de Heroku.

Josh Lavely
fuente
0

Estaba usando body-Parser que arroja una excepción

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

en lugar de usar

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

esto resolvió mi problema

S. Sid
fuente
0

Quiero registrar aquí cuál fue mi solución para este error, que era un archivo simple no actualizado a Github.

Tengo un proyecto de pila completa y mis archivos están estructurados tanto en el directorio raíz para el backend como en el cliente para el frontend (estoy usando React.js). Todo se redujo al hecho de que estaba empujando por error la carpeta del cliente solo a Github y todos mis cambios que tenían un error (faltaba una coma en la instancia de un objeto en mi index.js) no se actualizaron en el lado del backend. Dado que este Heroku obtiene todas las actualizaciones del repositorio de Github, no pude acceder a mi servidor y el error persistió. Luego, todo lo que tenía que hacer era confirmar y enviar al directorio raíz y actualizar todos los cambios del proyecto y todo volvió a funcionar nuevamente.

Luis Febro
fuente
0

En mi caso, tenía el código = H10 y el estado = 503 porque mi Procfile:

web: node build/server.js

e incluí / construí en .gitignore

Donovant
fuente
0

Lucho con el mismo error durante horas, pero pude resolverlo. Instalé multer y aws-sdk como devDependencies por error, en lugar de solo dependencias. Entonces, cualquiera que tenga el mismo error, simplemente verifique su archivo package.json.

Además, un pequeño consejo para la propiedad del motor en 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
fuente
0

Estaba implementando el framework Python Django cuando recibí este error porque olvidé poner el nombre de mi aplicación en web: gunicorn plaindjango.wsgi:application --log-file -lugar deplaindjango

Talha Anwar
fuente