Series Chinh phục Heroku | Bài 2: Triển khai API Node.js lên Cloud trong 5 phút
Hai "Cái bẫy" kinh điển của người mới
Trước khi gõ lệnh, có 2 nguyên tắc sống còn khi đưa code Node.js lên Heroku mà anh em backend hay quên:
- Heroku tự quyết định Cổng (Port): Bạn không thể fix cứng
app.listen(3000). Heroku sẽ tự động gán một cổng ngẫu nhiên thông qua biến môi trườngprocess.env.PORT. Nếu bạn ép nó chạy port 3000, ứng dụng sẽ bị crash ngay lập tức. - Khai báo lệnh Start: Heroku không biết tự chạy file
index.js. Nó sẽ nhìn vào filepackage.jsonvà tìm đoạn script"start"để thực thi.
Quy trình Deploy chuẩn xác
Cấu hình lại mã nguồn (Tích hợp Port động)
Bắt buộc để tránh lỗi H10 (App Crashed)
Đảm bảo file khởi chạy của bạn (thường là index.js hoặc server.js) có cấu hình Port động.
const express = require('express');
const app = express();
// Heroku sẽ nhét Port vào biến process.env.PORT
const PORT = process.env.PORT || 3000;
app.get('/', (req, res) => {
res.send('API hệ thống AFC chạy trên Node.js đã Online!');
});
app.listen(PORT, () => {
console.log(`Hệ thống đang chạy trên cổng ${PORT}`);
});
Khai báo lệnh khởi động trong package.json
Mở file package.json và thêm lệnh "start" vào block "scripts". Khi Heroku tải code của bạn lên, nó sẽ gõ lệnh npm start.
"scripts": {
"start": "node index.js",
"test": "echo \"Error: no test specified\" && exit 1"
}
"scripts": {
"start": "node index.js",
"test": "echo \"Error: no test specified\" && exit 1"
}
Tạo 'Bản đồ' cho Heroku (Procfile)
Không bắt buộc với Node.js nhưng là Best Practice
Tạo một file mới tinh tại thư mục gốc của dự án, đặt tên chính xác là Procfile (không có đuôi .txt hay gì cả, chữ P viết hoa).
Ghi vào đó đúng 1 dòng sau:
web: npm start
Dòng này báo cho Heroku biết: "Hãy cấp cho tôi một Dyno loại Web, và chạy lệnh npm start để khởi động".
Khởi tạo ứng dụng trên Heroku bằng CLI
Mở Terminal tại thư mục dự án và gõ các lệnh sau để đăng nhập và tạo server ảo:
# Đăng nhập vào Heroku (Sẽ mở trình duyệt để bạn xác thực)
heroku login
# Tạo một ứng dụng mới (Tên ứng dụng phải là duy nhất trên toàn cầu)
heroku create afc-node-api-hieu
Lúc này, Heroku đã cấp cho bạn một đường link HTTPS và tự động thêm một remote git có tên là heroku vào dự án của bạn.
Deploy bằng Git
Giờ chỉ việc đẩy code lên như cách bạn đẩy lên Bitbucket:
git add .
git commit -m "Bản release đầu tiên cho API AFC"
git push heroku main
(Lưu ý: Nếu nhánh hiện tại của bạn tên là master, hãy dùng lệnh git push heroku master).
Sau khi chạy lệnh, bạn sẽ thấy Terminal hiện ra quá trình Heroku tự động tải Node.js, cài các thư viện trong node_modules và nén ứng dụng lại.
Kiểm tra và Khắc phục sự cố (Troubleshooting)
Sau khi deploy xong, bạn gõ lệnh này để mở thẳng website trên trình duyệt:
heroku open
Nếu màn hình hiện lỗi "Application Error" (Lỗi H10), làm sao để bắt bệnh? Với tư cách là kỹ sư hệ thống, bạn không thể đoán mò. Hãy dùng lệnh đọc log thời gian thực của Heroku:
heroku logs --tail
Lệnh này giống hệt lệnh tail -f trên Linux, nó sẽ in ra màn hình mọi lỗi crash, lỗi thiếu thư viện hay lỗi sai cổng để bạn fix ngay lập tức.
All Rights Reserved