Lần triển khai Heroku đầu tiên không thành công ʻerror code = H10`


86

Tôi đã triển khai ứng dụng của mình cho Heroku. Đó là ứng dụng node.js + express + socket.io và đây là package.jsontệp

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

Đây là nhật ký tôi nhận được:

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=

Nó có nghĩa là gì?


4
"Ứng dụng bị lỗi" có nghĩa rõ ràng: ứng dụng của bạn bị lỗi. Tra cứu thêm trong nhật ký của bạn để xem lý do tại sao hoặc heroku restartkhởi chạy lại để bạn có thể xem lại lỗi.
willglynn

Tôi đang gặp vấn đề tương tự. Làm thế nào bạn sửa chữa nó?
Martin Schaer

6
có 1 câu trả lời cho câu hỏi này đã nhận được 6 lượt bình chọn cho đến nay ... vui lòng chọn câu trả lời đó làm câu trả lời chính xác của câu hỏi này.
Rakib

chào bạn @ilyo! Bạn có thể chấp thuận câu trả lời của tôi về điều này không? Nó đã 7 tuổi và không ngừng giúp đỡ mọi người :) Thanx!
Martin Schaer

Câu trả lời:


192

Đã tìm thấy giải pháp cho tôi ở đây: Lỗi Heroku + node.js (Quá trình web không thể liên kết với $ PORT trong vòng 60 giây sau khi khởi chạy)

Trong trường hợp của tôi, ứng dụng của tôi bị lỗi vì tôi đã khó thiết lập CỔNG, thay vì sử dụng cổng mà heroku dinamicaly đặt, có thể được truy cập bằng 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
Vâng, cảm ơn bạn cho giải pháp này. Tôi đã có cùng một vấn đề, và câu trả lời của bạn đã giải quyết được vấn đề của tôi sau vài giờ nghiên cứu.
LukyVj

2
Thậm chí 2 năm trôi qua, bài đăng này đã giúp tôi giải quyết khi Heroku gặp sự cố. Cảm ơn @Martin Schaer.
Rey Bango

1
Chính xác thì đó là vấn đề của tôi với java Spring boot. Cảm ơn
Mohy Eldeen 21/09/17

2
Ngày nay hầu hết chúng ta đang sử dụng ES6. Vì vậy, câu trả lời tương tự cũng có thể được viết trong ES6 bằng cách sử dụng hàm mũi tên. app.listen (process.env.PORT || 3000, () => {console.log ("Máy chủ Express đang lắng nghe trên cổng% d ở chế độ% s", this.address (). port, app.settings.env) ;});
Hemadri Dasari

Điều này đã xảy ra với tôi, nguyên nhân là do cố gắng nhập một thư viện không có trong tệp package.json của tôi.
Yvan Pearson

47

Tôi vừa gặp sự cố tương tự với ứng dụng của mình, tôi gặp sự cố sau khi di chuyển DB, sau khi thử nhiều tùy chọn, giải pháp đã giúp tôi là:

heroku restart

(Sử dụng bộ công cụ Heroku cho mac)


1
Tôi đã nhận được cùng một mã lỗi và mã của tôi đã từng hoạt động nhưng điều này đột ngột bắt đầu xảy ra. Lệnh "khởi động lại heroku" đã giải quyết vấn đề này cho tôi.
Mike

Điều tương tự cũng xảy ra với tôi sau khi thêm New Relic. Khởi động lại đã khắc phục sự cố của tôi
Kris Hollenbeck

5

Trong trường hợp của tôi, tôi đã tìm thấy lỗi tương tự vì có sự khác biệt về phiên bản của nút và npm trên máy cục bộ của tôi và được xác định trong phiên bản package.json.

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

khi tôi kiểm tra bằng cách sử dụng

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

khi tôi cập nhật package.json của mình lên

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

Nó hoạt động tốt :)


5

trong trường hợp của tôi, việc thêm process.env.PORT || 3000vào tập lệnh máy chủ http của tôi, đã được giải quyết. Nhật ký heroku của tôi báo lỗi 'H20' và trạng thái 503 http.


5

Tôi đã gặp sự cố này, vấn đề duy nhất là Procfile của tôi như thế này

web : node index.js

và tôi đã đổi thành

web:node index.js

vấn đề duy nhất là khoảng trống


3

Trong trường hợp của tôi, Procfile của tôi đã trỏ đến tệp sai (bot.js mà tôi đã sử dụng trước đó) vì vậy khi tôi cập nhật nó, lỗi đã biến mất.


3

khi sử dụng hapi18, tôi thấy việc lấy ra trường "máy chủ lưu trữ" và đặt cổng thành:

port: process.env.PORT || 5000 đã lừa.


2

Cũng kiểm tra kết nối cơ sở dữ liệu của bạn. Tôi đã quên thay đổi kết nối cơ sở dữ liệu của mình từ localhost và điều này đã làm hỏng ứng dụng của tôi khi nó được đẩy lên heroku.


2

Tôi phải đối mặt với vấn đề tương tự và không có câu trả lời nào ở trên giúp tôi. Những gì tôi đã làm đã được chạy:

node --version

và trong package.json, hãy thêm phần động cơ với phiên bản nút của bạn:

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

2

Chủ đề cũ, nhưng tôi đã khắc phục sự cố này bằng cách đặt hằng số PORT thành process.env.PORT ||

Vì một số lý do kỳ lạ, nó muốn tìm kiếm Env trước.


1

Trong trường hợp của riêng tôi, tôi gặp lỗi này vì tôi từ chối thêm Procfile vào ứng dụng node js của mình và "main": "app.js" của tôi ban đầu trỏ đến một tệp js khác làm tệp chính. vì vậy làm những chnages này sẽ sửa cho tôi


1

Tôi có một lỗi đánh máy

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

đã từng

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


1

Trong trường hợp của tôi, tôi đã quên đặt cơ sở dữ liệu env để triển khai. bạn có thể đặt env bằng lệnh này (Tôi đang sử dụng mLab cho máy chủ MongoDB)

cấu hình heroku: set MONGO_URI = 'mongodb: // address'


1

Đối với tôi, đó là Package.json, nó trống từ các phụ thuộc mặc dù tôi nghĩ rằng tôi đã cài đặt chúng .. vì vậy cuối cùng tôi phải cài đặt lại chúng với tùy chọn --save và xác minh rằng chúng đã được thêm vào package.json .. và sau đó đẩy nó một lần nữa và nó đã hoạt động.


1

Nếu bạn khởi động máy chủ nút cục bộ bằng cách nodemon, giống như tôi đã làm và nó hoạt động cục bộ, hãy thử npm start. Nodemon đã nói với tôi không có lỗi, nhưng npm start đã nói với tôi rất nhiều lỗi theo cách dễ hiểu và sau đó tôi có thể giải quyết chúng bằng cách theo dõi các bài viết khác ở đây. Tôi hy vọng nó sẽ giúp ích cho ai đó.


1

Trong trường hợp của tôi, không có lệnh bắt đầu nào trong phần tập lệnh của package.jsontệp. Khi tôi tạo package.jsontệp bằng, npm inittôi không tạo lệnh bắt đầu tập lệnh. Vì vậy, tôi đã đi đến package.jsontệp, dưới các tập lệnh, tôi đã thêm một mục mới:

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

Đã lưu nó và tải lên Heroku và nó hoạt động



0

Cổng của tôi đã được thiết lập để config.httpPortgiải quyết 80. Tôi đã sửa nó bằng cách thực hiện điều này:

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

app.listen(PORT, ...)

Cảm ơn rất nhiều, nó đã lãng phí tôi rất nhiều giờ đêm qua.


0

Mã lỗi H10 có thể có nhiều nghĩa khác nhau. Trong trường hợp của tôi, lần đầu là do tôi không biết rằng Heroku không tương thích với Sqlite3, lần thứ hai là do tôi vô tình đẩy bản cập nhật với Google analytics đang phát triển cũng như sản xuất.


0

Tôi gặp lỗi tương tự ở trên là "ứng dụng bị lỗi" và lỗi H10 và nhật ký ứng dụng heroku không hiển thị nhiều thông tin liên quan đến lý do lỗi tin nhắn. Sau đó, tôi khởi động lại dynos trong heroku và sau đó nó hiển thị lỗi nói thêm dấu ngoặc nhọn trong một trong các tệp index.js trong thiết lập của tôi. Sự cố đã được khắc phục sau khi nó được gỡ bỏ và triển khai lại ứng dụng trên heroku.


0

Chủ đề cũ hơn, nhưng đối với tôi, tôi đã không đặt .envvars của mình trong bảng điều khiển Heroku.


0

tôi đã sử dụng body-Parser để ném ngoại lệ

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

trước khi sử dụng

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

điều này đã giải quyết vấn đề của tôi


0

Tôi muốn đăng ký ở đây giải pháp của tôi cho lỗi này là một tệp đơn giản không được cập nhật lên Github.

Tôi có một dự án ngăn xếp đầy đủ và các tệp của tôi được cấu trúc cả thư mục gốc cho phần phụ trợ và máy khách cho giao diện người dùng (tôi đang sử dụng React.js). Tất cả là do tôi đã nhầm lẫn chỉ đẩy thư mục khách hàng đến Github và tất cả các thay đổi của tôi có lỗi (thiếu dấu phẩy trong phiên bản của đối tượng trong index.js của tôi) không được cập nhật trong phần phụ trợ. Vì Heroku này tìm nạp tất cả các bản cập nhật từ Kho lưu trữ Github, tôi không thể truy cập máy chủ của mình và lỗi vẫn tiếp diễn. Sau đó, tất cả những gì tôi phải làm là cam kết và đẩy vào thư mục gốc và cập nhật tất cả các thay đổi của dự án và mọi thứ trở lại hoạt động trở lại.


0

Trong trường hợp của tôi, tôi có mã = H10trạng thái = 503 vì tệp Procfile của tôi:

web: node build/server.js

và tôi đã bao gồm / xây dựng trong .gitignore


0

Tôi vật lộn với cùng một lỗi trong nhiều giờ, nhưng tôi đã có thể giải quyết nó. Tôi đã nhầm lẫn cài đặt multer và aws-sdk dưới dạng devDependencies, thay vì chỉ phụ thuộc. Vì vậy, bất kỳ ai gặp lỗi tương tự, chỉ cần kiểm tra lại tệp package.json của bạn.

Ngoài ra, một mẹo nhỏ cho thuộc tính của động cơ trong 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

Tôi đang triển khai khuôn khổ python Django thì gặp lỗi này vì tôi quên đặt tên ứng dụng của mình web: gunicorn plaindjango.wsgi:application --log-file -thay vìplaindjango

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.