iT邦幫忙

鐵人檔案

2026 iThome 鐵人賽
回列表
Modern Web

《NestJS 絕地求生手冊》:我用一年血淚換來的實戰排雷筆記 系列

《NestJS 絕地求生手冊》整理一年來從 Angular 前端轉向 NestJS 後端開發時實際踩過的坑。系列將依問題發生階段,從 DI、Module、DTO 驗證、型別轉換、TypeORM,到 Interceptor、Exception Filter 與 Swagger,拆解 30 個常見但容易卡關的情境。這不是從零教學,而是一份面向實戰的排雷筆記,希望幫助開發者更快定位問題、理解 NestJS 的運作方式,少走一點冤枉路。

參賽天數 26 天 | 共 26 篇文章 | 0 人訂閱 訂閱系列文 RSS系列文
DAY 1

Day 1|前言

如果你曾經在趕著專案上線前的加班夜,為了一個出了錯卻找不到原因的問題,除錯超過一小時,或是明明在 Query 傳了 "false",進到程式...

2026-09-15 ‧ 由 YUN 分享
DAY 2

Day 2|消失的提供者:為什麼寫了 Service 卻噴 can't resolve dependencies?

在 NestJS 中,DI(Dependency Injection,依賴注入)是整個框架的核心機制,開發者只要在 constructor 寫一行 privat...

2026-09-16 ‧ 由 YUN 分享
DAY 3

Day 3|消失的 IoC 控制權:為什麼手動 new Service() 會繞過 NestJS 的 DI?

昨天我們靠著釐清 providers、exports 與 imports 找回了消失的 provider。但在剛接觸 NestJS 時,有些人可能會有一個直覺想...

2026-09-17 ‧ 由 YUN 分享
DAY 4

Day 4|錯位的參數:useFactory 的 inject 陣列寫錯,為什麼傳進來的依賴全對不上?

當一個 provider 需要根據多個依賴動態建立時,useFactory 是 NestJS 常見的做法之一。這種寫法看似直觀,背後卻隱藏著一個容易被忽略的位置...

2026-09-18 ‧ 由 YUN 分享
DAY 5

Day 5|錯覺的順序:ConfigService 為什麼注入失敗?別被 imports 陣列順序騙了

隨著專案開始需要透過環境變數管理資料庫設定,我們通常會結合 @nestjs/config 與 TypeORM 的 forRootAsync(),並注入 Conf...

2026-09-19 ‧ 由 YUN 分享
DAY 6

Day 6|型別的騙局:`ConfigService.get<number>()` 拿到的為什麼還是字串?

在開發 NestJS 應用時,環境變數是抽離系統組態與機密資訊的常見做法。為了獲得良好的開發體驗與型別提示,我們常使用官方提供的 ConfigService,並...

2026-09-20 ‧ 由 YUN 分享
DAY 7

Day 7|循環依賴:forwardRef() 是解藥也是警訊

隨著專案規模逐漸變大,模組與服務之間的交互會越來越頻繁。有時候,我們不知不覺中就會創造出一個「雞生蛋、蛋生雞」的窘境。 今天,我們就要來面對 NestJS 開發...

2026-09-21 ‧ 由 YUN 分享
DAY 8

Day 8|蔓延的病毒:Scope.REQUEST 是如何悄悄吞噬你的效能?

在 NestJS 中,慢查詢或 N+1 這類問題通常有明確的數據或 Log 可循。但 Scope.REQUEST 引起的效能耗損,卻往往更難被察覺。 為了拿 x...

2026-09-22 ‧ 由 YUN 分享
DAY 9

Day 9|全域機制的隱形陷阱:為什麼用 app.useGlobal*(new ...) 會讓 DI 斷掉?

在 Day 3 中,我們拆解過手動 new Service() 如何讓實例逃離 Nest Container 的管轄。當時我們關注的是 Service 與 Co...

2026-09-23 ‧ 由 YUN 分享
DAY 10

Day 10|消失的路由:為什麼靜態路徑總是被動態參數給攔截?

解決了前面「啟動期」那些繁瑣的 DI 與模組依賴,今天我們正式進入「路由與請求進入」的新階段。請求進到 NestJS 進行路由匹配時,如果使用預設的 Expre...

2026-09-24 ‧ 由 YUN 分享