การปรับใช้ Heroku ครั้งแรกล้มเหลว "รหัสข้อผิดพลาด = H10"


88

ฉันปรับใช้แอปของฉันกับ 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

6
มีคำตอบ 1 คำตอบสำหรับคำถามนี้ซึ่งได้รับการโหวตถึง 6 ครั้งจนถึงขณะนี้ ... โปรดเลือกคำตอบนั้นเป็นคำตอบที่ถูกต้องของคำถามนี้
Rakib

สวัสดี @ilyo! คุณช่วยอนุมัติคำตอบของฉันเกี่ยวกับเรื่องนี้ได้ไหม อายุ 7 ขวบและคอยช่วยเหลือผู้คน :) Thanx!
Martin Schaer

คำตอบ:


199

พบวิธีแก้ปัญหาสำหรับฉันที่นี่: ข้อผิดพลาด Heroku + node.js (กระบวนการเว็บล้มเหลวในการผูกกับ $ PORT ภายใน 60 วินาทีหลังจากเปิดตัว)

ในกรณีของฉันแอพของฉันล้มเหลวเนื่องจากฉันตั้งค่า PORT ยากแทนที่จะใช้พอร์ตที่ heroku dinamicaly ตั้งค่าไว้ซึ่งสามารถเข้าถึงได้ด้วย 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

1
มันเป็นปัญหาของฉันกับ java spring boot ขอบคุณ
Mohy Eldeen

2
ทุกวันนี้พวกเราส่วนใหญ่ใช้ ES6 คำตอบเดียวกันนี้สามารถเขียนใน ES6 โดยใช้ฟังก์ชันลูกศร app.listen (process.env.PORT || 3000, () => {console.log ("เซิร์ฟเวอร์ Express กำลังฟังพอร์ต% d ในโหมด% s", this.address (). port, app.settings.env) ;});
Hemadri Dasari

1
@ PraveenKumar-M โดยปกติแล้วบรรทัดนั้นจะอยู่ในไฟล์หลักของเซิร์ฟเวอร์ของคุณ (index.js) appเป็นตัวอย่างของการแสดง
Martin Schaer

47

ฉันเพิ่งมีปัญหาคล้ายกันกับแอปของฉันฉันได้รับปัญหาหลังจากการย้ายฐานข้อมูลหลังจากลองใช้ตัวเลือกมากมายสิ่งที่ช่วยฉันได้คือ

heroku restart

(ใช้แถบเครื่องมือ Heroku สำหรับ Mac)


1
ฉันได้รับรหัสข้อผิดพลาดเดียวกันและของฉันเคยใช้งานได้ แต่สิ่งนี้ก็เกิดขึ้นทันที คำสั่ง "heroku restart" เคลียร์สิ่งนี้ให้ฉัน
Mike

สิ่งเดียวกันเกิดขึ้นกับฉันหลังจากเพิ่ม New Relic รีสตาร์ทแก้ไขปัญหาของฉัน
Kris Hollenbeck

6

ฉันมีปัญหานี้ปัญหาเดียวคือ Procfile ของฉันเป็นแบบนี้

web : node index.js

และฉันเปลี่ยนเป็น

web:node index.js

ปัญหาเดียวคือช่องว่าง


5

ในกรณีของฉันฉันพบข้อผิดพลาดเดียวกันเนื่องจากมีความแตกต่างของเวอร์ชันของโหนดและ 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 || 3000สคริปต์เซิร์ฟเวอร์ http ของฉันได้รับการแก้ไข บันทึก heroku ของฉันรายงานข้อผิดพลาด 'H20' และสถานะ 503 http


3

ในกรณีของฉัน Procfile ของฉันชี้ไปที่ไฟล์ที่ไม่ถูกต้อง (bot.js ที่ฉันใช้ก่อนหน้านี้) ดังนั้นเมื่อฉันอัปเดตแล้วข้อผิดพลาดก็หายไป


3

เมื่อใช้ hapi18 ฉันพบว่านำฟิลด์ "โฮสต์" ออกมาและตั้งค่าพอร์ตเป็น:

port: process.env.PORT || 5000 ทำเคล็ดลับ


2

ตรวจสอบการเชื่อมต่อฐานข้อมูลของคุณด้วย ฉันลืมเปลี่ยนการเชื่อมต่อฐานข้อมูลจาก localhost และทำให้แอปของฉันขัดข้องเมื่อถูกผลักไปที่ heroku


2

ฉันประสบปัญหาเดียวกันนี้และไม่มีคำตอบใดข้างต้นช่วยฉันได้ สิ่งที่ฉันทำคือวิ่ง:

node --version

และใน package.json เพิ่มส่วนเอ็นจิ้นด้วยเวอร์ชันโหนดของคุณ:

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

2

หากคุณเริ่มต้นเซิร์ฟเวอร์ในประเทศโหนดโดยเช่นผมและท้องถิ่นทำงานลองnodemon npm startNodemon บอกฉันว่าไม่มีข้อผิดพลาด แต่ npm start บอกฉันหลายอย่างด้วยวิธีที่เข้าใจได้จากนั้นฉันสามารถแก้ไขได้โดยทำตามโพสต์อื่นที่นี่ ฉันหวังว่ามันจะช่วยให้ใครบางคน


2

Old Thread แต่ฉันแก้ไขปัญหานี้โดยการตั้งค่า PORT constant เป็น process.env.PORT ||

ด้วยเหตุผลแปลก ๆ มันต้องการค้นหา Env ก่อน


1

ในกรณีของฉันเองฉันได้รับข้อผิดพลาดนี้เนื่องจากฉันปฏิเสธที่จะเพิ่ม Procfile ในแอป node js ของฉันและในตอนแรก "main": "app.js" ของฉันชี้ไปที่ไฟล์ js อื่นเป็นไฟล์หลัก ดังนั้นการทำ chnages เหล่านี้ทำให้ฉันได้รับการแก้ไข



1

ในกรณีของฉันฉันลืมตั้งค่า env ฐานข้อมูลสำหรับการปรับใช้ คุณสามารถตั้งค่า env ด้วยคำสั่งนี้ (ฉันใช้ mLab สำหรับเซิร์ฟเวอร์ MongoDB)

การกำหนดค่า heroku: ตั้งค่า MONGO_URI = 'mongodb: // address'


1

สำหรับฉันมันเป็น Package.json มันว่างเปล่าจากการอ้างอิงแม้ว่าฉันคิดว่าฉันได้ติดตั้งแล้ว .. ดังนั้นฉันจึงต้องติดตั้งใหม่ด้วย - บันทึกตัวเลือกในตอนท้ายและตรวจสอบว่ามีการเพิ่มลงใน package.json .. แล้ว ดันอีกครั้งและใช้งานได้


1

ในกรณีของฉันไม่มีคำสั่ง start ในส่วนสคริปต์ของpackage.jsonไฟล์ เมื่อฉันสร้างpackage.jsonไฟล์ด้วยnpm initฉันไม่ได้สร้างคำสั่งสคริปต์เริ่มต้น ดังนั้นฉันจึงไปที่package.jsonไฟล์ภายใต้สคริปต์ฉันเพิ่มรายการใหม่:

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

บันทึกและอัปโหลดไปยัง Heroku และใช้งานได้



0

พอร์ตของฉันถูกกำหนดให้ซึ่งมีมติให้config.httpPort 80ฉันแก้ไขโดยทำสิ่งนี้:

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

app.listen(PORT, ...)

ขอบคุณมากเมื่อคืนฉันเสียเวลาไปหลายชั่วโมง


0

รหัสข้อผิดพลาด H10 อาจหมายถึงสิ่งต่างๆมากมาย ในกรณีของฉันครั้งแรกเป็นเพราะฉันไม่รู้ว่า Heroku เข้ากันไม่ได้กับ Sqlite3 ครั้งที่สองเป็นเพราะฉันดันอัปเดตโดยบังเอิญด้วยการวิเคราะห์ของ Google ที่ทำงานในการพัฒนาและการผลิต


0

ฉันได้รับข้อผิดพลาดเดียวกันกับ "แอปขัดข้อง" และข้อผิดพลาด H10 และบันทึกของแอป heroku ไม่แสดงข้อมูลที่เกี่ยวข้องกับสาเหตุข้อความแสดงข้อผิดพลาดมากนัก จากนั้นฉันรีสตาร์ท dynos ใน heroku จากนั้นมันแสดงข้อผิดพลาดที่บอกว่าปีกกาเพิ่มเติมในไฟล์ index.js ไฟล์ใดไฟล์หนึ่งในการตั้งค่าของฉัน ปัญหาได้รับการแก้ไขแล้วเมื่อนำออกและปรับใช้แอปบน heroku อีกครั้ง


0

เธรดที่เก่ากว่า แต่สำหรับฉันฉันไม่ได้ตั้งค่า.envvars ในคอนโซล 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 โดยไม่ได้ตั้งใจและการเปลี่ยนแปลงทั้งหมดของฉันที่มีข้อผิดพลาด (ไม่มีเครื่องหมายจุลภาคในอินสแตนซ์ของวัตถุในดัชนี js ของฉัน) ไม่ได้รับการอัปเดตในด้านแบ็กเอนด์ เนื่องจาก Heroku นี้ดึงข้อมูลอัปเดตทั้งหมดจาก Github Repository ฉันจึงไม่สามารถเข้าถึงเซิร์ฟเวอร์ของฉันได้และข้อผิดพลาดยังคงอยู่ จากนั้นสิ่งที่ฉันต้องทำก็คือการยอมรับและผลักดันไปที่ไดเรกทอรีรากและอัปเดตการเปลี่ยนแปลงทั้งหมดของโครงการและทุกอย่างก็กลับมาทำงานอีกครั้ง


0

ในกรณีของฉันฉันมีรหัส = H10และสถานะ = 503เนื่องจาก Procfile ของฉัน:

web: node build/server.js

และฉันรวม/ สร้างใน. gitignore


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

ฉันกำลังปรับใช้ python Django framework เมื่อฉันได้รับข้อผิดพลาดนี้เพราะฉันลืมใส่ชื่อแอปของฉันweb: gunicorn plaindjango.wsgi:application --log-file -แทนplaindjango

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.