Chạy bot Node.js
Trang này dùng ví dụ một bot Discord viết bằng discord.js, nhưng cách làm giống hệt cho mọi ứng dụng Node.js khác như API Express hay script chạy định kỳ. Bạn cần một server loại Node.js, xem Mua server đầu tiên nếu chưa có.
Server Node.js khởi động như thế nào
Phần tiêu đề “Server Node.js khởi động như thế nào”Mỗi lần bạn bấm Start trong dashboard, server làm lần lượt ba việc:
- Cài thêm các gói ghi trong biến Additional Node packages và gỡ các gói ghi trong Uninstall Node packages (nếu có).
- Nếu thư mục có
package.json, server chạynpm installđể cài đủ thư viện. - Chạy file chính ghi trong biến Main file, mặc định là
index.js.
Nghĩa là bạn không cần tải thư mục node_modules lên. Chỉ cần package.json và code, server tự cài phần còn lại. File chính viết bằng TypeScript (.ts) cũng chạy được trực tiếp, không cần build trước.
Chuẩn bị code trên máy
Phần tiêu đề “Chuẩn bị code trên máy”Một bot đơn giản có cấu trúc như sau:
- index.js
- package.json
- .env
Token của bot nên để trong file .env thay vì viết thẳng vào code, để lỡ chia sẻ code thì token không bị lộ. Dùng thư viện dotenv để đọc file này:
require('dotenv').config();const { Client, GatewayIntentBits } = require('discord.js');
const client = new Client({ intents: [GatewayIntentBits.Guilds] });client.once('ready', () => console.log(`Đã đăng nhập: ${client.user.tag}`));client.login(process.env.DISCORD_TOKEN);DISCORD_TOKEN=token-cua-banTrong package.json, nhớ khai báo đủ thư viện ở mục dependencies, ví dụ discord.js và dotenv. Cách nhanh nhất là chạy npm install discord.js dotenv trên máy, lệnh này tự ghi vào package.json.
Tải code lên và chạy
Phần tiêu đề “Tải code lên và chạy”-
Mở dashboard, chọn server rồi vào trang Tệp.
-
Kéo thả các file vào trang, hoặc bấm Tải lên. Nếu có nhiều file, hãy nén cả thư mục thành
.ziptrên máy, tải lên rồi mở menu của file đó (chuột phải hoặc nút ba chấm) và chọn Giải nén. Bỏ thư mụcnode_modulesra trước khi nén cho nhẹ. -
Vào trang Startup. Kiểm tra ô Main file đúng tên file chính của bạn, ví dụ
index.jshoặcsrc/bot.ts. Ô này dài tối đa 16 ký tự. -
Cũng ở trang Startup, chọn phiên bản Node.js trong ô Docker image nếu code của bạn cần một phiên bản cụ thể.
-
Quay về Console và bấm Start. Lần chạy đầu sẽ lâu hơn một chút vì server cần cài thư viện. Khi thấy dòng
Đã đăng nhập: …, bot của bạn đã online.
Lấy code từ GitHub
Phần tiêu đề “Lấy code từ GitHub”Nếu code nằm trên GitHub, bạn có thể để server tự tải về thay vì tải tay:
-
Ở trang Startup, điền địa chỉ repo vào Git Repo Address, nhánh vào Install Branch nếu không dùng nhánh mặc định. Repo riêng tư thì điền thêm Git Username và Git Access Token (tạo ở GitHub › Settings › Developer settings).
-
Server chỉ tải repo về khi thư mục đang trống. Vào Tệp, xóa hết file đang có (hãy tạo bản sao lưu trước nếu cần giữ).
-
Vào Cài đặt, bấm Cài lại. Server dừng, tải repo về và cài thư viện.
-
Muốn mỗi lần khởi động tự lấy code mới nhất, bật Auto Update. Server sẽ chạy
git pulltrước khi chạy bot.
Khi bot không chạy
Phần tiêu đề “Khi bot không chạy”Mọi lỗi đều hiện trong Console. Đọc mấy dòng đỏ cuối cùng thường là đủ biết nguyên nhân.
Cannot find module 'discord.js' nghĩa là thiếu thư viện. Kiểm tra package.json có khai báo thư viện đó chưa, rồi Restart để server cài lại.
Cannot find module '/home/container/index.js' nghĩa là ô Main file không khớp với tên file thật. Vào Tệp xem tên chính xác (phân biệt chữ hoa thường), rồi sửa trong Startup.
Bot chạy được một lúc rồi tắt thường là do hết RAM. Biểu đồ RAM trong Console sẽ chạm đỉnh ngay trước lúc tắt. Hãy giảm bộ nhớ đệm trong code, hoặc nâng cấp gói.
Bot chậm hẳn đi sau một thời gian có thể do server đã dùng hết CPU-giờ của tháng. Xem thẻ CPU trong khu vực khách hàng, giải thích chi tiết ở CPU-giờ là gì.