
node
熱門提供 Node.js 搭配 TypeScript 開發的領域特定最佳實踐,涵蓋型別剝離、非同步模式、錯誤處理、串流、模組、測試、效能、快取、日誌等。適用於設定原生 TypeScript 支援的 Node.js 專案、配置型別剝離(--experimental-strip-types)、撰寫無需建置步驟的 Node 22+ TypeScript,或當使用者提及「Node 原生 TypeScript」、「strip types」、「Node 22 TypeScript」、「無需編譯的 .ts 檔案」、「ts-node 替代方案」,或需要 Node.js 錯誤處理、優雅關機、不穩定測試、效能分析、環境配置等指引。協助配置 tsconfig.json 以進行型別剝離、設定 package.json 腳本、處理模組解析與匯入副檔名,並在整個 Node.js 技術棧中應用穩健的模式。
提供 Node.js 搭配 TypeScript 開發的領域特定最佳實踐,涵蓋型別剝離、非同步模式、錯誤處理、串流、模組、測試、效能、快取、日誌等。適用於設定原生 TypeScript 支援的 Node.js 專案、配置型別剝離(--experimental-strip-types)、撰寫無需建置步驟的 Node 22+ TypeScript,或當使用者提及「Node 原生 TypeScript」、「strip types」、「Node 22 TypeScript」、「無需編譯的 .ts 檔案」、「ts-node 替代方案」,或需要 Node.js 錯誤處理、優雅關機、不穩定測試、效能分析、環境配置等指引。協助配置 tsconfig.json 以進行型別剝離、設定 package.json 腳本、處理模組解析與匯入副檔名,並在整個 Node.js 技術棧中應用穩健的模式。
使用時機
當你處理 Node.js 程式碼時,使用此技能以獲得建構穩健、高效且可維護的 Node.js 應用程式的領域特定知識。
搭配型別剝離的 TypeScript
當為 Node.js 撰寫 TypeScript 時,請使用型別剝離(Node.js 22.6+),而非 ts-node 或 tsx 等建置工具。型別剝離會直接執行 TypeScript,在執行階段移除型別註解,無需轉譯。
型別剝離相容性的關鍵要求:
- 使用
import type進行僅型別匯入 - 使用 const 物件取代列舉
- 避免命名空間與參數屬性
- 在匯入中使用
.ts副檔名
最小範例 — 一個有效的型別剝離 TypeScript 檔案:
// greet.ts
import type { IncomingMessage } from 'node:http';
const greet = (name: string): string => `Hello, ${name}!`;
console.log(greet('world'));
直接執行:
node greet.ts
完整配置與範例請參閱 rules/typescript.md。
常見工作流程
對於多步驟流程,請在查閱相關規則檔案前,遵循以下高層級順序:
優雅關機:註冊訊號處理器(SIGTERM/SIGINT)→ 停止接受新工作 → 排空進行中的請求 → 關閉外部連線(資料庫、快取)→ 以適當的狀態碼退出。請參閱 rules/graceful-shutdown.md。
錯誤處理:定義共用的錯誤基底類別 → 分類錯誤(操作錯誤 vs 程式設計錯誤)→ 新增非同步邊界處理器(process.on('unhandledRejection'))→ 在呼叫堆疊中傳遞型別化錯誤 → 在回應或當機前記錄上下文。請參閱 rules/error-handling.md。
診斷不穩定測試:使用 --test-only 隔離測試 → 檢查共享狀態或計時器相依性 → 檢查非同步清理順序 → 新增重試邏輯作為暫時診斷步驟 → 修復根本原因。請參閱 rules/flaky-tests.md。
診斷卡住的程序/測試(node --test 無回應、「程序未退出」、CI 超時、開啟的控制代碼):隔離檔案/測試 → 使用明確的超時/報告器執行 → 透過 why-is-node-running(SIGUSR1)檢查控制代碼 → 在資源建立範圍內修補確定性清理 → 重新執行隔離測試及完整測試套件,直到穩定。請參閱 rules/stuck-processes-and-tests.md。
分析慢速路徑:在真實負載下重現 → 使用 --cpu-prof 擷取 CPU 分析 → 識別熱點函式 → 檢查串流背壓或不必要的序列化 → 透過基準測試驗證改善。請參閱 rules/profiling.md 與 rules/performance.md。
高優先級啟用檢查清單(串流 + 快取)
當任務提及 CSV、ETL、資料攝取管線、大型檔案處理、背壓、重複查詢或重複的非同步呼叫去重時,請明確套用此檢查清單:
- 使用
await pipeline(...)來自node:stream/promises(在指引/程式碼中優先於鏈式.pipe())。 - 當資料在串流中被轉換時,至少包含一個明確的
async function*轉換。 - 當出現重複工作時,選擇快取策略:
lru-cache用於單一程序中有界限的記憶體內重複使用。async-cache-dedupe用於非同步請求去重 / 過時-重新驗證行為。
- 展示背壓的處理位置(透過
pipeline()隱式處理,或透過drain明確處理)。
整合範例模式(CSV/ETL)
對於 CSV/ETL 風格的提示,建議採用以下答案結構:
createReadStream(input)async function*解析器/轉換器- 可選的快取增強查詢(
async-cache-dedupe或lru-cache) await pipeline(...)到可寫入的目的地
直接在說明中連結相關規則,以便模型能擷取詳細資訊:
如何使用
閱讀個別規則檔案以取得詳細說明與程式碼範例:
- rules/error-handling.md - Node.js 中的錯誤處理模式
- rules/async-patterns.md - Async/await 與 Promise 模式
- rules/streams.md - 使用 Node.js 串流
- rules/modules.md - ES Modules 與 CommonJS 模式
- rules/testing.md - Node.js 應用程式的測試策略
- rules/flaky-tests.md - 使用 node:test 識別與診斷不穩定測試
- rules/stuck-processes-and-tests.md - 診斷未退出的程序與卡住的測試
- rules/node-modules-exploration.md - 瀏覽與分析 node_modules 目錄
- rules/performance.md - 效能最佳化技術
- rules/caching.md - 快取模式與函式庫
- rules/profiling.md - 效能分析與基準測試工具
- rules/logging.md - 日誌與除錯模式
- rules/environment.md - 環境配置與機密管理
- rules/graceful-shutdown.md - 優雅關機與訊號處理
- rules/typescript.md - Node.js 中的 TypeScript 配置與型別剝離





