첫 번째 Heroku 배포 실패 ʻerror code = H10`


86

내 앱을 Heroku에 배포했습니다. node.js + express + socket.io 앱이고 이것은 package.json파일입니다.

{
  "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"
  }
}

이것은 내가 얻는 로그입니다.

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=

무슨 뜻이에요?


4
'앱 충돌'은 분명한 의미를 갖습니다. 앱이 충돌했습니다. 로그에서 더 자세히 살펴보고 이유를 확인하거나 heroku restart다시 시작하여 충돌을 다시 볼 수 있습니다.
willglynn

나는 같은 문제가 있습니다. 어떻게 고쳤나요?
Martin Schaer 2013 년

6
이 질문에 대해 이미 6 개의 찬성표를받은 답변이 1 개 있습니다 ...이 질문의 정답으로 해당 답변을 선택하십시오.
Rakib 2014

안녕 @ilyo! 이것에 대한 내 대답을 승인 해 주시겠습니까? 그것은 7 살이고 사람들을 계속 돕고 있습니다 :) 고맙습니다!
Martin Schaer

답변:


192

나를위한 해결책을 찾았습니다 : Heroku + node.js 오류 (시작 후 60 초 이내에 웹 프로세스가 $ PORT에 바인딩하지 못했습니다)

제 경우에는 heroku dinamicaly가 설정하는 포트를 사용하는 대신 PORT를 설정하기가 어려웠 기 때문에 앱이 충돌했습니다. 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);
});

1
이 솔루션에 감사드립니다. 나는 똑같은 문제가 있었고 몇 시간의 연구 끝에 귀하의 답변이 내 문제를 해결했습니다.
LukyVj

2
2 년 후에도이 게시물은 Heroku가 충돌 할 때 도움이되었습니다. @Martin Schaer에게 감사드립니다.
Rey Bango 2015

1
정확히 자바 스프링 부트에 대한 내 문제였습니다. 감사합니다
Mohy Eldeen

2
요즘 우리 대부분은 ES6를 사용하고 있습니다. 따라서 화살표 기능을 사용하여 ES6에서도 동일한 답변을 작성할 수 있습니다. app.listen (process.env.PORT || 3000, () => {console.log ( "Express server listen on port % d in % s mode", this.address (). port, app.settings.env) ;});
Hemadri Dasari

이것은 내 package.json 파일에없는 라이브러리를 가져 오려고했기 때문에 발생했습니다.
Yvan Pearson

47

내 앱에서 비슷한 문제가 발생했습니다. 많은 옵션을 시도한 후 DB 마이그레이션 후 문제가 발생했습니다.

heroku restart

(Mac 용 Heroku toolbelt 사용)


1
나는 동일한 오류 코드를 얻었고 내 작업에 사용되었지만 이것은 갑자기 발생하기 시작했습니다. "heroku restart"명령이이 문제를 해결했습니다.
Mike

New Relic을 추가 한 후에도 같은 일이 발생했습니다. 다시는 내 문제 해결
크리스 HOLLENBECK

5

제 경우에는 로컬 컴퓨터에 node와 npm의 버전 차이가 있고 package.json 버전에 정의되어 있기 때문에 동일한 오류를 발견했습니다.

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

내가 사용할 때

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

내 package.json을 업데이트하면

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

잘 작동합니다 :)


5

내 경우에는 process.env.PORT || 3000http 서버 스크립트에 추가 하여 해결했습니다. 내 heroku 로그에 'H20'오류와 503 http 상태가보고되었습니다.


5

이 문제가 있었는데 유일한 문제는 내 Procfile이 다음과 같았습니다

web : node index.js

그리고 나는

web:node index.js

유일한 문제는 공백이었다


3

제 경우에는 Procfile이 잘못된 파일 (이전에 사용한 bot.js)을 가리키고 있었기 때문에 업데이트하면 오류가 사라졌습니다.


3

hapi18을 사용할 때 "host"필드를 꺼내 포트를 다음과 같이 설정합니다.

port: process.env.PORT || 5000 트릭을했다.


2

또한 데이터베이스 연결을 확인하십시오. localhost에서 데이터베이스 연결을 변경하는 것을 잊었고 heroku로 푸시되면 내 앱이 충돌했습니다.


2

나는이 같은 문제에 직면했으며 위의 답변 중 어느 것도 나를 도왔습니다. 내가 한 일은 다음과 같습니다.

node --version

package.json에서 노드 버전과 함께 engines 섹션을 추가하십시오.

{
  "name": "myapp",
  "description": "a really cool app",
  "version": "1.0.0",
  "engines": {
    "node": "6.11.1"
  }
}

2

Old Thread,하지만 PORT 상수를 process.env.PORT로 설정하여이 문제를 수정합니다 ||

이상한 이유 때문에 먼저 Env를 검색하고 싶었습니다.


1

제 경우에는 노드 js 앱에 Procfile 추가를 거부하고 "main": "app.js"가 처음에 다른 js 파일을 main으로 가리키고 있었기 때문에이 오류가 발생했습니다. 그래서이 chnages는 나를 위해 그것을 고쳐


1

오타가있었습니다

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

예전에는

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


1

제 경우에는 배포를 위해 데이터베이스 환경을 설정하는 것을 잊었습니다. 이 명령으로 env를 설정할 수 있습니다 (MongoDB 서버에 mLab을 사용하고 있습니다)

heroku 구성 : MONGO_URI = 'mongodb : // address'설정


1

나에게는 Package.json이었다고 생각 했는데도 의존성에서 비어 있었다. 그래서 마지막에 --save 옵션으로 다시 설치하고 package.json에 추가되었는지 확인해야했다. 다시 밀어서 작동했습니다.


1

nodemon내가 한 것처럼 로컬에서 노드 서버를 시작 하고 로컬에서 작동하는 경우 npm start. Nodemon은 나에게 오류가 없다고 말했지만 npm start는 이해할 수있는 방식으로 많은 오류를 알려 주었고 여기에서 다른 게시물을 따라 가면 해결할 수있었습니다. 누군가에게 도움이되기를 바랍니다.


1

제 경우에는 package.json파일 의 스크립트 섹션에 시작 명령이 없었습니다 . 내가 만든 때 package.json와 파일을 npm init내가 시작 스크립트 명령을 작성하지 않았다. 그래서 package.json파일로 이동하여 스크립트 아래에 새 항목을 추가했습니다.

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

그것을 저장하고 Heroku에 업로드했으며 작동했습니다.


0

%가 포함 된 암호가 나를 위해 그것을 깨뜨 렸습니다.


0

내 포트가로 확인되도록 설정 config.httpPort되었습니다 80. 다음과 같이 수정했습니다.

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

app.listen(PORT, ...)

감사합니다. 어제 밤에 많은 시간을 낭비했습니다.


0

H10 오류 코드는 여러 가지를 의미 할 수 있습니다. 제 경우에는 처음은 Heroku가 Sqlite3와 호환되지 않는다는 사실을 몰랐기 때문이고, 두 번째는 실수로 개발 및 프로덕션에서 작동하는 Google 애널리틱스로 업데이트를 푸시했기 때문입니다.


0

위의 "app crashed"및 H10 오류와 동일한 오류가 발생하고 heroku 앱 로그에 오류 메시지 이유와 관련된 많은 정보가 표시되지 않습니다. 그런 다음 heroku에서 dyno를 다시 시작한 다음 설정의 index.js 파일 중 하나에 추가 중괄호라는 오류가 표시되었습니다. heroku에서 앱을 제거하고 다시 배포하면 문제가 해결되었습니다.


0

이전 스레드이지만 나를 .env위해 Heroku 콘솔에서 내 변수를 설정하지 않았습니다 .


0

나는 예외를 던지는 body-Parser를 사용하고 있었다.

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

사용하지 않는

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

이것은 내 문제를 해결했습니다


0

Github로 업데이트되지 않은 간단한 파일이었던이 오류에 대한 솔루션이 무엇인지 여기에 등록하고 싶습니다.

풀 스택 프로젝트가 있고 내 파일은 백엔드의 루트 디렉토리와 프론트 엔드의 클라이언트 모두 구조화되어 있습니다 (React.js를 사용하고 있습니다). 모든 것은 내가 실수로 클라이언트 폴더를 Github에만 푸시하고 오류가있는 모든 변경 사항 (index.js의 개체 인스턴스에 쉼표 누락)이 백엔드 측에서 업데이트되지 않았다는 사실로 귀결되었습니다. 이 Heroku는 Github Repository에서 모든 업데이트를 가져 오기 때문에 서버에 액세스 할 수없고 오류가 지속되었습니다. 그런 다음 내가해야 할 일은 루트 디렉토리로 커밋하고 푸시하고 프로젝트의 모든 변경 사항을 업데이트하는 것이었고 모든 것이 다시 작동하도록 돌아 왔습니다.


0

제 경우에는 Procfile이 다음 과 같이 코드 = H10상태 = 503이 있습니다 .

web: node build/server.js

.gitignore에 / build 를 포함 했습니다 .


0

몇 시간 동안 같은 오류로 고생했지만 해결할 수있었습니다. multer와 aws-sdk를 단지 종속성 대신 실수로 devDependencies로 설치했습니다. 따라서 동일한 오류가있는 사람은 package.json 파일을 다시 확인하십시오.

또한 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"
}

0

web: gunicorn plaindjango.wsgi:application --log-file -대신에 내 앱 이름을 입력하는 것을 잊었 기 때문에이 오류가 발생했을 때 Python Django 프레임 워크를 배포했습니다.plaindjango

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.