Trang này ban đầu được viết bằng tiếng Anh. Bản dịch có sự hỗ trợ của AI và vẫn đang được hoàn thiện —hãy cho chúng tôi biếtnếu có chỗ nào đọc chưa xuôi.
Không Có Bản Sửa Nào Hoạt Động Sau Khi Tải Lại Trang
tech

Không Có Bản Sửa Nào Hoạt Động Sau Khi Tải Lại Trang

April 17, 2026 Bởi The Salty Korean 4 phút đọc

Các route đã được sửa. State endpoint đã được viết lại. Định dạng dữ liệu đã được sửa. Mọi thay đổi đều đã được xác nhận trong repository, hiển thị trong file, đúng như dự định.

Tải lại trình duyệt. Không có gì thay đổi.

Vẫn cái bảng hỏng đó. Vẫn cái canvas trắng đó.

Điều Thực Sự Đang Xảy Ra

Nền tảng chạy cục bộ trong Docker — một tập hợp các container, mỗi container chạy một service, được kết nối qua một cấu hình dùng chung. Ứng dụng web front-end được mount theo volume: file nguồn trên đĩa được map trực tiếp vào container. Vite, công cụ build, theo dõi thay đổi file và tự động tải lại trình duyệt.

Ngoại trừ việc nó không theo dõi.

Trên Windows với Docker chạy qua WSL2 — lớp tương thích Linux mà Windows dùng cho container — các thông báo sự kiện filesystem mà Vite dựa vào để phát hiện thay đổi không truyền đúng qua ranh giới ảo hóa. Hệ thống thông báo của Linux báo cáo thay đổi. Windows không chuyển tiếp nó. Vite không bao giờ thấy file được cập nhật. Trình duyệt vẫn tiếp tục phục vụ đoạn code đã có ở đó từ trước.

Bản sửa là một dòng trong cấu hình Vite: usePolling: true. Thay vì chờ được thông báo về thay đổi, Vite kiểm tra mỗi 300 mili giây. Hơi kém hiệu quả một chút. Nó hoạt động.

Table engine — service backend quản lý trạng thái game thực — có phiên bản riêng của cùng vấn đề đó. Các service backend trong stack này không chạy với watch mode. Thay đổi code yêu cầu khởi động lại container thủ công. Hành vi tiêu chuẩn cho một service cấp độ production. Bạn chỉ cần biết là phải khởi động lại.

Điều Khác Đang Sai

Một khi các vấn đề về môi trường đã được giải quyết, một bug thứ ba xuất hiện: route bàn có một auth guard luôn gửi trình duyệt về trang login.

Không phải vì người dùng chưa đăng nhập. Họ đã đăng nhập. Guard đang kiểm tra một giá trị context của TanStack Router không bao giờ được populate — router được cấu hình mà không có context provider, nên context.auth luôn là undefined. Guard đọc "chưa xác thực", redirect về login. Login thấy session đã xác thực, redirect về lại lobby. Trình duyệt rơi vào vòng lặp.

Một dòng được thay đổi. Guard được cập nhật để đọc trực tiếp từ authentication store, cùng pattern mà mọi route khác trong ứng dụng đều sử dụng. Đã sửa.

Điều Này Yêu Cầu Gì Ở Người Trước Bàn Phím

Các bản sửa là đúng. Hệ thống không tiếp nhận chúng. Quan sát đó — rằng code đúng và code đang chạy là hai thứ khác nhau — yêu cầu hiểu môi trường phát triển đủ rõ để đặt được câu hỏi đúng.

Agent có thể viết bản sửa. Có thể truy ra bug khi bạn mô tả nó. Không thể nhận ra rằng trình duyệt đang phục vụ phiên bản cache của code trước thay đổi cấu hình. Quan sát đó là việc của con người.

Hiểu hệ thống đủ rõ để chẩn đoán tại sao một bản sửa đúng lại không phát huy hiệu quả — đó là phần không được tự động hóa.

Sau khi cấu hình polling, sau những lần khởi động lại container, sau khi sửa auth guard: bàn đã tải. Các ghế xuất hiện. Dialog buy-in render. Card lobby có chiều cao đúng. Mọi thứ hoạt động.

Bài tiếp theo sẽ cover việc integration testing trông như thế nào khi đã có một hệ thống hoạt động để test — và tại sao giai đoạn đó trông giống nhau bất kể AI hay con người viết code.

Để xem góc nhìn của founder về việc điều hướng quá trình debug kiểu này — vai trò human-in-the-loop thực sự đòi hỏi gì khi AI viết phần lớn codebase — có ở The Salty Korean.

Stay salty.

Thẻ: docker debugging platform development dev-environment
Chia sẻ:

The Salty Korean

Người sáng lập Salty Poker Network. Viết về poker Texas, xây dựng nền tảng và tương lai của poker trực tuyến. Đọc thêm tại The Salty Korean.