Gỡ lỗi Node.js trong VS Code: Thiết lập điểm dừng và kiểm soát luồng thực thi

Để gỡ lỗi ứng dụng Node.js hiệu quả trong VS Code, hãy áp dụng các phương pháp sau - phù hợp cho cả developer frontend và backend.

Phương pháp đơn giản nhất (Khởi đầu cho người mới)

Tạo file thực thi cơ bản:

// app.js
const calculateSum = (x, y) => x + y;

const total = calculateSum(5, 7);
console.log('Kết quả:', total);

Thao tác gỡ lỗi:

  1. Mở file app.js trong VS Code
  2. Click vào bên trái số dòng để thiết lập điểm dừng (xuất hiện chấm đỏ)
  3. Khởi động chế độ debug bằng:
    • Nút ▶️ trên thanh công cụ
    • Phím tắt F5 (tất cả hệ điều hành)

Cấu hình nâng cao với launch.json

Để xử lý dự án phức tạp, tạo file cấu hình debug:

{
  "version": "0.2.0",
  "configurations": [
    {
      "type": "node",
      "request": "launch",
      "name": "Khởi chạy ứng dụng",
      "entryFile": "${workspaceFolder}/app.js",
      "workingDir": "${workspaceFolder}",
      "console": "integratedTerminal",
      "excludeInternal": ["<node_internals>/**"]
    }
  ]
}

Các tham số quan trọng:

  • entryFile: Đường dẫn file khởi chạy
  • excludeInternal: Bỏ qua mã nguồn Node.js nội bộ

Gỡ lỗi qua npm scripts

Với cấu hình trong package.json:

"scripts": {
  "start": "node src/main.js"
}

Thiết lập debug tương ứng:

{
  "type": "node",
  "request": "launch",
  "name": "Debug npm start",
  "runtime": "npm",
  "args": ["run", "start"],
  "console": "integratedTerminal"
}

Kết nối với tiến trình đang chạy (Attach Mode)

Khởi động ứng dụng với:

node --inspect=9230 server.js

Cấu hình VS Code:

{
  "type": "node",
  "request": "attach",
  "name": "Kết nối máy chủ",
  "debugPort": 9230
}

Phương pháp này đặc biệt hữu ích khi debug ứng dụng trong Docker hoặc môi trường production.

Kỹ thuật gỡ lỗi nâng cao

  • Từ khóa debug: Chèn debugger vào code để tự động dừng thực thi
  • Biến theo dõi: Sử dụng khung Watch để quan sát giá trị biểu thức (vd: request.headers)
  • Điểm dừng có điều kiện: Click phải vào điểm dừng → Thiết lập biểu thức kiểm tra (vd: userId > 100)

Xử lý sự cố thường gặp

  • Điểm dừng không hoạt động: Kiểm tra đường dẫn file nguồn và cấu hình source map
  • Bị lạc vào mã nguồn Node.js: Đảm bảo có tham số "excludeInternal": ["<node_internals>/**"]
Hành động Phím tắt
Tiếp tục thực thi F5
Bước qua hàm (Step Over) F10
Chạy vào hàm (Step Into) F11
Thoát khỏi hàm (Step Out) Shift + F11

Thẻ: VSCode nodejs debugging-tools JavaScript expressjs

Đăng vào ngày 27 tháng 6 lúc 18:01