ใครมี Project Node.JS อยู่แล้ว มาเอาขึ้น Heroku กันเถอะ

หลาย ๆ คนน่าจะเคยเอา Node.JS Server ขึ้น Heroku กันมาก่อนแล้ว วิธีขึ้นโปรเจคก็ไม่ได้ยุ่งยากซับซ้อนอะไร ส่วนใครยังไม่เคยทำ ก็สามารถอ่านได้จาก doc ของ Heroku ได้เลย

แต่ปัญหาจะเกิดขึ้นเมื่อ เราไม่ได้ขึ้น Project ตาม doc ของ Heroku เพราะ Project ของเราจะขาด Procfile และ port ซึ่ง Heroku ต้องใช้ในการ run Node.JS Project ให้เรา

ก่อนหน้านี้ ทำ Local Node.JS server โดยที่ไม่ได้มีแผนจะเอาขึ้น Heroku มาก่อน แล้วต้องการนำขึ้น Heroku พอไปอ่าน doc ของ Heroku บอกว่า ให้ทำการ Initial Project จาก Repository ของทาง Heroku แปลว่าต้องขึ้นโปรเจคใหม่ ?

Project ที่ได้สร้างไว้สร้างไว้โดยไม่ใช้ Template ของ Heroku

เลยทำการสร้าง Procfile และ กำหนด port เองซะเลย

แล้วต้องทำอะไรกับ Project เดิมที่มีอยู่บ้างหละ ?

  1. สร้าง Procfile ใน Repositoryใส่ web: node <your-app-name>.js
  2. กำหนด port ใน app.js เป็น process.env.PORT เพื่อให้ Heroku สามารถกำหนด port ได้ หรือ ถ้าไม่มี ใช้เป็นที่เรากำหนด เช่นในตัวอย่าง คือ 5000
กำหนด port ให้ app.js

เพื่อทดสอบว่า Project นี้ ยังสามารถทำงานที่ Local ได้ตามปกติ และ Heroku ได้ สามารถทดสอบได้ด้วยคำสั่ง $ heroku local web

แต่ก่อนหน้านั้น ใครยังไม่ติดตั้ง Heroku CLI และยังไม่ได้ $ heroku login จัดการให้เรียบร้อยก่อนนะ

ทดสอบการยิง request ไปที่ localhost:5000

จากนั้น ถ้า Project ใครยังไม่เป็น Repository (.git)ทำการ สร้างขึ้นมาก่อน โดย

$ git init

$ git add .

$ git commit -m "Initial Project"

หรือ ใครจะสร้าง และ commit ด้วยGit Client ก็ได้ แล้แต่ถนัดเลย

จากนั้น สร้าง heroku app ด้วยคำสั่ง $ heroku create แล้วเราก็จะได้ ชื่อ Heroku app และ Heroku app url มา

ไปดูได้ใน Heroku Dashboard (https://dashboard.heroku.com/apps) ก็จะเจอ Heroku

แต่เมื่อเข้าไปใน url ที่ได้จาก $ heroku create ก็จะพบกับ

เมื่อเข้าไปใน heroku app url

แน่หละ ก็เรายังไม่ได้ push ขึ้นไปบน Heroku Remote

กลับไป ที่ Terminal ของเรา ทำการ push ขึ้นไป

$ git push <heroku-git-url> master

ซึ่ง heroku-git-url ก็ได้มาหลังจากเราสั่ง $ heroku create

เมื่อ push ขึ้นไปเสร็จแล้ว

ทีนี้ลองมายิง request ไปที่ heroku app ของเรากัน

One clap, two clap, three clap, forty?

By clapping more or less, you can signal to us which stories really stand out.