Lỗi kỳ lạ trong hệ thốngTất cả chúng ta đều đã từng gặp tình huống này. Đã muộn rồi, bạn vừa viết xong 500 dòng code cho một tính năng mới và nhấn F5 để bắt đầu debug. Thay vì dừng lại ở một breakpoint, VS Code lại báo lỗi: launch: program '/workspace/app.js' does not exist. Đó là một sự gián đoạn khó chịu. Bạn có thể thấy tệp tin nằm ngay đó trong thanh bên (sidebar), nhưng trình gỡ lỗi lại coi như nó vô hình.
Điều này thường xảy ra vì tệp launch.json của bạn đang tìm kiếm một "bóng ma". Nó có thể đang trỏ đến một đường dẫn cố định không còn tồn tại hoặc sử dụng một biến không gian làm việc (workspace variable) trỏ sai thư mục.
Tại sao VS Code không tìm thấy tệp của bạnVS Code dựa vào tệp .vscode/launch.json để hiểu cách khởi động ứng dụng của bạn. Thuộc tính "program" chính là tọa độ GPS cụ thể cho điểm bắt đầu (entry point) của bạn. Nếu đường dẫn đó sai dù chỉ một ký tự—chẳng hạn như thiếu chữ 's' trong thư mục /scripts—trình gỡ lỗi sẽ bỏ cuộc ngay lập tức.
Nguyên nhân phổ biến nhất thường là những lỗi sơ đẳng của con người. Có thể bạn đã chuyển index.js vào thư mục src/ và quên cập nhật cấu hình. Hoặc có lẽ bạn đang làm việc trong một thư mục con, nhưng ${workspaceFolder} lại đang trỏ vào thư mục gốc của kho lưu trữ (repository). Các đường dẫn cố định (hardcoded paths) cũng là một cái bẫy lớn; một đường dẫn như C:\Users\Dev\Project sẽ bị hỏng ngay khi đồng đội của bạn cố gắng chạy nó trên máy của họ.
Cách sửa nhanh "Chạy tệp hiện tại"Đôi khi bạn chỉ cần kiểm tra một tập lệnh duy nhất mà không cần xây dựng cấu hình phức tạp. Trong những trường hợp này, hãy thay đổi dòng "program" để sử dụng biến ${file}. Điều này yêu cầu VS Code bỏ qua cấu trúc dự án và chỉ chạy bất kỳ tệp nào bạn đang mở trong tab trình chỉnh sửa.
{
"version": "0.2.0",
"configurations": [
{
"type": "node",
"request": "launch",
"name": "Gỡ lỗi tệp hiện tại",
"program": "${file}"
}
]
}
Đây là một lối tắt tuyệt vời để kiểm tra nhanh. Tuy nhiên, nó kém hiệu quả hơn đối với các dự án lớn, nơi bạn luôn cần bắt đầu từ một điểm bắt đầu cụ thể như server.js.
Cách sửa lỗi "Đường dẫn không gian làm việc" triệt đểĐể có một thiết lập đáng tin cậy, bạn muốn trình gỡ lỗi luôn nhắm mục tiêu vào điểm bắt đầu của mình bất kể bạn đang chỉnh sửa tệp nào. Điều này đòi hỏi việc ánh xạ đường dẫn tương đối so với thư mục gốc của dự án bằng cách sử dụng ${workspaceFolder}.
Ví dụ cho Node.jsNếu tệp chính của bạn nằm trong thư mục con có tên là dist, cấu hình của bạn sẽ trông như thế này:
"program": "${workspaceFolder}/dist/app.js"
Ví dụ cho PythonCác lập trình viên Python thường gặp lỗi này khi làm việc với các framework như Django hoặc Flask. Hãy đảm bảo "program" của bạn trỏ đến vị trí tuyệt đối của tệp manage.py hoặc main.py:
{
"name": "Python: Tệp hiện tại",
"type": "python",
"request": "launch",
"program": "${workspaceFolder}/src/main.py",
"console": "integratedTerminal"
}
Xử lý không gian làm việc đa thư mục (Multi-Root Workspaces)Mọi thứ trở nên phức tạp hơn khi bạn mở nhiều dự án trong một cửa sổ VS Code. Trong Không gian làm việc đa thư mục (Multi-Root Workspace), ${workspaceFolder} mặc định là thư mục đầu tiên bạn mở. Để chính xác, hãy sử dụng tên thư mục trong biến: ${workspaceFolder:my-api-service}/app.js. Điều này đảm bảo trình gỡ lỗi không đi tìm mã API của bạn bên trong thư mục frontend.
Gỡ lỗi cho chính trình gỡ lỗi của bạnChỉ cần thiếu một dấu phẩy hoặc dư một dấu ngoặc kép cũng có thể làm hỏng tệp launch.json, khiến VS Code bỏ qua hoàn toàn các thay đổi của bạn. Khi các đường dẫn của tôi có vẻ đúng nhưng lỗi vẫn còn, tôi sẽ kiểm tra nhanh cú pháp JSON.
Tôi thường sử dụng JSON Formatter & Validator trên ToolCraft để phát hiện những lỗi vô hình này. Đây là một công cụ dựa trên trình duyệt giúp làm nổi bật các vấn đề cú pháp—như dấu phẩy thừa—mà không cần tải dữ liệu của bạn lên bất kỳ đâu. Nó nhanh hơn nhiều so với việc nheo mắt nhìn vào tệp cấu hình 50 dòng để cố gắng tìm một lỗi đánh máy.

