Lỗi Gặp Phải
Bạn nhấn F5 để bắt đầu debug, và VS Code ném ra thông báo này:
Unable to start debugging. Unexpected token in JSON at position 0
Đôi khi vị trí là 0, đôi khi là 47 hay 213 — con số không quan trọng lắm. Điều quan trọng là VS Code không thể phân tích cú pháp file launch.json của bạn và từ chối khởi động debugger.
Nguyên Nhân
Trước khi bắt đầu bất kỳ phiên debug nào, VS Code đọc file .vscode/launch.json. Chỉ cần một ký tự sai vị trí — dấu phẩy thừa, dấu ngoặc chưa đóng — là bộ phân tích JSON dừng ngay lập tức.
Những nguyên nhân thường gặp:
- Dấu phẩy thừa sau phần tử cuối cùng trong một object hoặc array (phổ biến nhất)
- Comment trong file (
// như thế này) — JSON chuẩn không cho phép comment - Dùng dấu nháy đơn thay vì dấu nháy kép cho chuỗi
- Thiếu hoặc thừa dấu ngoặc nhọn / dấu ngoặc vuông
- Ký tự đặc biệt chưa được escape trong giá trị chuỗi
- File trống hoặc bị cắt bớt — đây là trường hợp điển hình gây ra lỗi "position 0"
Cách Sửa: Từng Bước
Bước 1 — Mở launch.json trực tiếp
Mở Command Palette (Ctrl+Shift+P / Cmd+Shift+P) và chạy lệnh Open launch.json. Hoặc điều hướng đến .vscode/launch.json trong panel Explorer — cách nào nhanh hơn thì dùng.
Bước 2 — Kiểm tra panel Problems
VS Code có trình kiểm tra JSON tích hợp sẵn. Với launch.json đang là file đang mở, hãy mở panel Problems (Ctrl+Shift+M). Bạn sẽ thấy thông báo kiểu như:
Trailing comma [json(trailingComma)]
Comments are not permitted in JSON [json(jsonc)]
Click vào lỗi — VS Code sẽ nhảy thẳng đến dòng bị lỗi. Chỉ vậy thôi là giải quyết được 80% trường hợp.
Bước 3 — Sửa các lỗi phổ biến nhất
Dấu phẩy thừa (thường gặp nhất)
Sai:
{
"version": "0.2.0",
"configurations": [
{
"type": "node",
"request": "launch",
"name": "Launch Program",
"program": "${workspaceFolder}/index.js", // ← dấu phẩy thừa ở đây
}
]
}
Đúng:
{
"version": "0.2.0",
"configurations": [
{
"type": "node",
"request": "launch",
"name": "Launch Program",
"program": "${workspaceFolder}/index.js"
}
]
}
Comment trong JSON
JSON chuẩn không có cú pháp comment — không có ngoại lệ. Hãy xóa chúng đi:
// Sai
{
"version": "0.2.0", // đây là phiên bản schema
...
}
// Đúng
{
"version": "0.2.0",
...
}
Lưu ý một điều: VS Code nội bộ dùng JSONC (JSON with Comments) cho các file cấu hình của chính nó. Nếu launch.json được gán nhầm chế độ ngôn ngữ, comment sẽ gây ra lỗi dù bình thường không sao. Hãy nhìn vào thanh trạng thái góc dưới bên phải — nơi đó phải hiển thị JSON with Comments, không phải JSON thông thường. Click để thay đổi nếu cần.
Dấu nháy đơn
// Sai
{
'version': '0.2.0'
}
// Đúng
{
"version": "0.2.0"
}
Dấu ngoặc không khớp
Click vào bất kỳ dấu { hoặc [ nào — VS Code sẽ tô sáng dấu ngoặc đóng tương ứng. Duyệt qua file từ trên xuống dưới để tìm dấu ngoặc nào không có cặp.
Bước 4 — Kiểm tra bằng công cụ bên ngoài
Nếu panel Problems không hiển thị lỗi nào nhưng lỗi vẫn còn, file có thể chứa ký tự vô hình hoặc vấn đề encoding khiến trình kiểm tra của VS Code bị qua mặt. Hãy dán nội dung file vào JSON Formatter & Validator trên ToolCraft — công cụ chạy hoàn toàn trên trình duyệt (không upload gì lên server) và hiển thị chính xác dòng cùng vị trí ký tự bị lỗi. Nhanh hơn nhiều so với đọc từng dòng bằng mắt.
Bước 5 — Tạo lại launch.json từ đầu
Đôi khi file bị hỏng đến mức sửa từng dòng không đáng công. Hãy làm lại từ đầu:
# Xóa file bị lỗi
rm .vscode/launch.json
Sau đó vào Run → Add Configuration. VS Code sẽ tự sinh ra template launch.json hợp lệ phù hợp với loại dự án của bạn. Chỉ thêm lại những tùy chỉnh bạn thực sự cần — không thêm gì thừa.
Bước 6 — Kiểm tra ký tự BOM
Lỗi tại "Position 0" cụ thể là dấu hiệu đáng ngờ của BOM (Byte Order Mark) — một ký tự vô hình mà một số trình soạn thảo âm thầm thêm vào đầu file. Nó không hiển thị trong VS Code nhưng phá vỡ việc phân tích JSON ngay lập tức. Kiểm tra encoding hiển thị trên thanh trạng thái: phải hiển thị UTF-8, không phải UTF-8 with BOM.
Để loại bỏ BOM: Command Palette → Change File Encoding → Save with Encoding → chọn UTF-8 (không có BOM).
Xác Nhận Đã Sửa Xong
- Lưu file
launch.jsonsau khi chỉnh sửa. - Xác nhận panel Problems không còn hiển thị lỗi nào cho file này.
- Nhấn F5 — debugger sẽ khởi động mà không còn thông báo lỗi.
- Panel Debug Console mở ra và hiển thị output của chương trình bạn.
Phòng Tránh Lỗi Tái Phát
- Dùng Add Configuration thay vì gõ tay. Tùy chọn Add Configuration trong menu Run chèn các đoạn JSON hợp lệ trực tiếp — không lỗi đánh máy, không thiếu dấu phẩy.
- Kiểm tra trong CI. Nếu
launch.jsonđược lưu trong version control, hãy chạy lệnhjq . .vscode/launch.jsonnhư một bước CI. Lệnh này thoát với mã lỗi khác 0 khi có lỗi JSON, để file cấu hình bị hỏng không bao giờ lọt vào repo. - Bật Format on Save. Settings → tìm kiếm Format On Save → bật lên. Tùy chọn này không sửa được lỗi cấu trúc, nhưng dấu phẩy thừa sẽ bị phát hiện ngay khi bạn lưu file.
- Giữ chế độ ngôn ngữ JSONC luôn bật. Thanh trạng thái phải luôn hiển thị JSON with Comments cho file
launch.json, không phải JSON thông thường. Điều này cho phép dùng comment và cung cấp IntelliSense cho các thuộc tính cấu hình debug. - Để sẵn một công cụ kiểm tra. Bookmark JSON Formatter của ToolCraft — đây là cách nhanh nhất để kiểm tra bất kỳ file cấu hình nào bạn đã chỉnh sửa thủ công.

