+1

Daily Devlog - Ngày 1 [Setup Project + Error Handling]

Hôm nay tôi hoàn thành phase 1 của SocialHub — Và tôi đã làm được gì:

1. Setup project Nodejs + Typescipt:

- TypeScript strict mode → không cho phép code “mập mờ”
- ESLint + Prettier → giữ code sạch, đồng nhất
- tsx watch → dev nhanh, không phải build thủ công

2. Cấu trúc thư mục MVCS theo feauture:

-  src/ chia thành config/, modules/, middlewares/, utils/, routes/
-  Mỗi module có 3 lớp tách biệt: 
    -  route → nhận request
    - controller → xử lý HTTP layer
    - service → chứa business logic

3. Hệ thống Error Handling:

- AppError class để throw lỗi nghiệp vụ kèm statusCode, code, isOperational.
- sendSuccess / sendError chuẩn hóa shape JSON cho mọi response.
- errorHandler middleware gom mọi lỗi về một chỗ, phân loại operational vs bug, giấu stack trace ở production.
- NotFoundHandler bắt route không tồn tại

4. Một bài học nhỏ: Throw với Return

- Ở notFoundHandler, tôi từng viết:
```typescript 
    return new AppError(...)
```
Và tự hỏi vì sao Express không bắt được lỗi.
Câu trả lời: vì tôi chưa throw nó.
```typescript 
    throw new AppError(...)
```
Một chi tiết nhỏ, nhưng là khác biệt giữa hiểu và không hiểu cách runtime hoạt động.

Ngày mai bắt đầu phase 2 với Prisma và MongoDB. Hẹn gặp ở Ngày 2.


All Rights Reserved

Viblo
Let's register a Viblo Account to get more interesting posts.