Cách khắc phục lỗi "TypeScript server quit unexpectedly" trong VS Code

beginner💻 VS Code2026-05-23| Visual Studio Code, các dự án TypeScript (macOS, Windows, Linux)

Error Message

TypeScript server quit unexpectedly. This may be due to a bug or very large TypeScript project.
#typescript#vscode#tsserver#intellisense#gỡ lỗi

Khi TypeScript Server "đầu hàng"Bạn đang mải mê trong một dự án React hoặc Next.js phức tạp thì đột nhiên trình soạn thảo "đứng hình". Không còn syntax highlighting, không còn những đường kẻ đỏ gợn sóng, và việc di chuột qua các biến hoàn toàn không có phản hồi. Sau đó, một thông báo đáng sợ xuất hiện ở góc dưới bên phải:

TypeScript server quit unexpectedly. This may be due to a bug or very large TypeScript project.

Điều này có nghĩa là tsserver—tiến trình chạy ngầm cung cấp năng lượng cho IntelliSense, type checking, và điều hướng—đã bị crash. Điều này thường xảy ra khi tiến trình chạm ngưỡng giới hạn bộ nhớ (thường là khoảng 3GB theo mặc định), bị kẹt trong một vòng lặp recursive type, hoặc gặp lỗi do sự không tương thích phiên bản giữa workspace của bạn và trình soạn thảo.

Sửa lỗi nhanh: Buộc khởi động lạiĐừng vội can thiệp vào các file cấu hình ngay lúc này. Một thao tác khởi động lại đơn giản thường có thể dọn dẹp các tiến trình bị treo hoặc các lỗi tạm thời do việc chuyển đổi các branch gây ra.

  • Mở Command Palette (Cmd+Shift+P trên Mac hoặc Ctrl+Shift+P trên Windows).- Nhập "Restart TS Server".- Chọn TypeScript: Restart TS Server.Nếu server lại bị crash chỉ sau vài giây, rất có thể bạn đang đối mặt với tình trạng thắt nút cổ chai tài nguyên hoặc xung đột cấu hình.

Tăng giới hạn bộ nhớ cho TS ServerCác monorepos lớn hoặc dự án với hàng ngàn file có thể dễ dàng làm quá tải mức phân bổ bộ nhớ mặc định. Nếu bạn có sẵn 16GB hoặc 32GB RAM, hãy cho server thêm "không gian thở" bằng cách nâng giới hạn lên 8GB.

Cách thay đổi cài đặt bộ nhớ:- Mở VS Code Settings (Cmd+,).- Tìm kiếm typescript.tsserver.maxTsServerMemory.- Thay đổi giá trị từ mặc định thành 8192.Ngoài ra, bạn có thể thêm trực tiếp dòng này vào file .vscode/settings.json để áp dụng riêng cho dự án này:

{
  "typescript.tsserver.maxTsServerMemory": 8192
}

Đồng bộ hóa các phiên bản TypeScriptVS Code đi kèm với phiên bản TypeScript riêng, nhưng dự án của bạn có thể dựa trên một phiên bản cụ thể được cài đặt trong node_modules. Sự không khớp ở đây là nguyên nhân điển hình gây ra tình trạng mất ổn định. Hãy luôn ưu tiên sử dụng phiên bản của workspace.

  • Mở bất kỳ file .ts hoặc .tsx nào.- Nhìn vào thanh trạng thái phía dưới. Nhấp vào số phiên bản cạnh biểu tượng { }.- Chọn "Use Workspace Version" từ menu thả xuống.Điều này đảm bảo trình soạn thảo sử dụng chính xác phiên bản compiler mà các script build của bạn sử dụng, ngăn chặn các lỗi crash do cú pháp mới mà phiên bản tích hợp sẵn có thể chưa hiểu được.

Loại trừ các thư mục nặng khỏi IndexingTypeScript server có thể đang kiệt sức vì cố gắng indexing các thư mục mà nó không cần động đến, như dist, build, hoặc các thư mục tài liệu đồ sộ. Việc tối ưu hóa mảng exclude trong file tsconfig.json có thể giảm đáng kể khối lượng công việc cho server.

Hãy đảm bảo mảng exclude của bạn bao gồm tất cả các thư mục không phải source code:

{
  "compilerOptions": {
    // ... các options của bạn
  },
  "exclude": ["node_modules", "dist", "build", ".next", "out", "coverage"]
}

Đối với các dự án cực lớn, bạn cũng có thể yêu cầu VS Code ngừng watching một số pattern nhất định bằng cách cập nhật cài đặt workspace:

{
  "typescript.tsserver.watchedFile": "dynamicPriorityPolling",
  "files.exclude": {
    "**/.git/objects/**": true,
    "**/node_modules/*/**": true
  }
}

Xóa Cache và cài đặt lạiĐôi khi một lockfile bị hỏng hoặc thư mục node_modules lộn xộn là thủ phạm. Nếu server vẫn hoạt động không ổn định, việc dọn dẹp sạch sẽ là cách đáng tin cậy nhất để reset môi trường.

# Remove dependencies and lockfiles
rm -rf node_modules package-lock.json pnpm-lock.yaml yarn.lock

# Fresh install
npm install

Bạn cũng nên xóa TypeScript cache. Trên macOS, hãy xóa ~/Library/Caches/TypeScript. Trên Windows, hãy xóa nội dung trong %AppData%\Local\Microsoft\TypeScript. Điều này buộc server phải xây dựng lại các index từ đầu.

Kiểm tra LogsVẫn thấy crash? Bảng Output đóng vai trò như một "hộp đen" cho các lỗi nội bộ của trình soạn thảo. Nó sẽ cho bạn biết chính xác lý do tại sao server bị ngừng hoạt động.

  • Mở tab Output (View > Output).- Chọn TypeScript từ menu thả xuống ở bên phải.- Tìm kiếm dòng FATAL ERROR: Ineffective mark-compacts near heap limit.Nếu logs chỉ ra một file cụ thể, hãy kiểm tra file đó để tìm các recursive types phức tạp hoặc vòng lặp vô hạn. Một định nghĩa type "quá thông minh" đôi khi có thể làm sập toàn bộ server.

Kiểm tra kết quảĐể xác nhận vấn đề đã được giải quyết, hãy mở file TypeScript lớn nhất của bạn và đợi thông báo "Loading..." trên thanh trạng thái biến mất. Di chuột qua một interface phức tạp; nếu định nghĩa xuất hiện ngay lập tức và server vẫn hoạt động ổn định sau hơn 10 phút lập trình, bạn đã thành công. Hãy để ý Activity Monitor của hệ thống—tsserver lúc này sẽ nằm trong phạm vi 8GB ổn định mới.

Related Error Notes