現代化 Node.js 應用程式
學習使用 IBM Bob 進行應用程式現代化,將 Node.js Express API 從版本 16 升級到 22。在這個實作教學中嘗試使用模式、核准和文學編碼的 AI 輔助開發。
簡介
Bob 是一個 AI SDLC(軟體開發生命週期)合作夥伴,可以增強您現有的工作流程。 在本教學中,您將透過將 TypeScript Express API 從 Node.js 16 現代化到 Node.js 22 來學習 Bob 的一些核心功能。您不需要 Node.js 或 TypeScript 經驗即可完成本教學。您將學習 Bob 如何分析相依性和現代化程式碼模式。
您將學習的關鍵功能
Bob 提供四個基本功能,您將在升級 API 時使用:
- 模式:為特定任務客製化 Bob 行為的專業角色。
- 內容提及:在與 Bob 的對話中引用特定的專案元素,例如檔案、資料夾或 Git 提交。
- 核准工作流程:在執行之前審查 Bob 計劃使用的每個工具。
- 文學編碼:直接在編輯器中與 Bob 一起編寫程式碼。在程式碼應該放置的位置用自然語言輸入指令。
先決條件
本教學使用 TypeScript Express REST API 作為範例專案。但是,您不需要 Node.js 或 TypeScript 經驗。
要完成本教學,您需要以下內容:
- Docker(已安裝並執行中)
- Bob IDE(已安裝)
- 已完成快速入門教學
- 內容視窗教學(選用)
設定您的工作區
啟動 IBM Bob 並複製範例儲存庫以開始使用您將現代化的 Node.js 應用程式。
啟動 IBM Bob
在您的電腦上啟動 IBM Bob 應用程式。
開啟 Bob 側邊欄
如果聊天面板尚未開啟,請透過按一下導覽列旁邊的 Bob 圖示或使用快速鍵 Option + Command + B(Mac)或 Ctrl + Alt + B (Windows)開啟它。

複製教學儲存庫
透過按一下 Bob IDE 面板左上角的檔案圖示來複製包含範例應用程式的儲存庫。然後按一下複製儲存庫,並將以下 GitHub 儲存庫貼到搜尋列中。Bob 會詢問您想將儲存庫儲存在哪裡。您可以將其儲存在任何位置。
https://github.com/IBM/bob-demo.git
停用自動核准
確保自動核准已關閉。你可以在權限中找到此設定。關閉自動核准後,Bob 在執行任何建議的變更之前會先徵求你的許可。
建置容器化環境
建立 Dockerfile 以在容器化環境中執行應用程式,消除在本機安裝 Node.js 或相依性的需要。
切換到 Agent 模式
透過按一下聊天輸入欄位左側的模式選擇下拉式選單並選擇 Agent 將 Bob 切換到 Agent 模式。
模式是 Bob 尊重最小權限原則的一種方式。每種模式都授予 Bob 代表您提議特定任務集的權限。Agent 模式允許 Bob 編寫、修改和重構程式碼。Bob 仍然在每次操作之前請求權限。
建立 Dockerfile
在 Bob 聊天面板中輸入以下提示以要求 Bob 建立 Dockerfile。Bob 將請求對多個檔案的讀取存取權限以了解 Dockerfile 的要求。按一下核准以授予 Bob 讀取這些檔案的權限:
為此 Node.js TypeScript 應用程式建立 Dockerfile。它應該使用 Node 16 以符合目前應用程式版本,建置 TypeScript 程式碼,並在連接埠 `3000` 上執行應用程式。Bob 確定適當的 Dockerfile 結構並向您顯示建議的檔案。動作按鈕出現在聊天輸入欄位上方。按一下儲存以建立檔案。儲存會在您的專案中寫入或修改檔案。在本教學的後面部分,Bob 更新 Dockerfile 以使用 Node 22。
驗證舊版應用程式是否建置
在現代化之前,驗證舊版程式碼是否正確建置和執行。此基準確保您可以識別現代化引入的任何問題。
在建置階段,Bob 會告訴您建置失敗,因為 Dockerfile 使用 npm ci,它需要一個不存在的 package-lock.json 檔案。
在 Bob 聊天面板中,告訴 Bob 建置和測試應用程式。
使用 Docker 建置和測試舊版應用程式以驗證它在現代化之前是否正常運作。應用程式應該在 /api/todos 使用範例資料回應 API 請求
測試後,清理容器。Bob 要求您儲存對 Dockerfile 的變更,該變更將修復 package-lock.json 問題,並顯示以下訊息:
建置失敗,因為沒有 package-lock.json 檔案。我需要更新 Dockerfile 以使用 `npm install` 而不是 `npm ci`。讓我修復這個問題。Bob 偵測和修復建置錯誤的能力是它如何與您合作在部署期間排除故障和解決問題的範例。
Bob 套用修復並完成建置後,它確認舊版應用程式建置成功、API 端點正常回應,並且清理已完成。
您和 Bob 已驗證舊版應用程式可以正常運作。
使用 Bob 的 Ask 模式探索 Node.js 程式碼庫
在現代化之前,按一下模式選擇下拉式選單並切換到 Bob 的 Ask 模式。Ask 模式只能讀取檔案,因此您可以安全地探索程式碼而不會意外進行變更。您還可以在 Bob 聊天中輸入 /ask 以切換到 Ask 模式。
使用 @ 內容提及來審查專案
Bob 支援 @ 內容提及,允許您在提示中直接引用特定檔案、資料夾或問題。內容提及為 Bob 提供有關您想討論的內容的精確資訊。
透過使用 @ 提及明確告訴 Bob 要分析哪些檔案來探索 package.json、tsconfig.json 和 Dockerfile 檔案。了解這些檔案可以幫助您在進行任何變更之前了解現代化要求。
在 Bob 聊天面板中,執行以下提示:
@package.json 此專案使用哪個 Node.js 版本?哪些相依性需要為 Node.js 22 更新?給我一個簡短的摘要。@ 符號告訴 Bob 將 package.json 作為內容包含。Bob 不會立即開始回答;它首先探索您的程式碼庫,讀取檔案,遵循模式並分析程式碼。不要中斷此探索階段。
Bob 識別 Node.js 22 所需的以下更新:
**目前 Node.js 版本:** 16.x
**Node.js 22 需要更新的相依性:**
1. **@types/node**:^16.18.0 → ^22.x.x(Node.js 22 的 TypeScript 型別)
2. **typescript**:^4.9.5 → ^5.x.x(TypeScript 5+ 以更好地支援 Node.js 22)
3. **ts-node**:^10.9.1 → ^10.9.2+(確保與 TS 5 和 Node 22 相容)
**已經相容的相依性:**
- **express**:^4.18.2 ✓(適用於 Node.js 22)
- **uuid**:^9.0.0 ✓(適用於 Node.js 22)
- **@types/express**:^4.17.17 ✓(相容)
- **@types/uuid**:^9.0.0 ✓(相容)
**摘要:** 只有 Node.js 特定的開發相依性需要更新。執行階段相依性(Express、UUID)已經與 Node.js 22 相容。分析 TypeScript 設定
要求 Bob 分析專案的 TypeScript 設定:
@tsconfig.json 此 TypeScript 專案使用什麼模組系統和編譯器設定?哪些相依性需要為 Node.js 22 更新?給我一個簡短的摘要。Bob 回應您需要為 Node.js 22 更新的以下元件:
**目前 TypeScript 設定:**
**模組系統:** CommonJS(`"module": "commonjs"`)
- 使用 `require()` 和 `module.exports` 的傳統 Node.js 模組系統
- 輸出:具有 CommonJS 語法的 `.js` 檔案
**編譯器設定:**
- **Target:** ES2020(編譯為 ES2020 JavaScript)
- **Lib:** ES2020(使用 ES2020 標準程式庫功能)
- **Module Resolution:** Node(標準 Node.js 解析演算法)
- **Strict Mode:** 已啟用(完整型別檢查)
**Node.js 22 的建議更新:**
1. **target**:ES2020 → **ES2022** 或 **ESNext**(利用更新的 JS 功能)
2. **lib**:ES2020 → **ES2022**(存取更新的 API)
3. **module**:考慮遷移到 **"node16"** 或 **"nodenext"** 以獲得原生 ESM 支援
4. **moduleResolution**:"node" → **"node16"** 或 **"bundler"**(更好的現代解析)
**摘要:** 專案使用具有 ES2020 目標的舊版 CommonJS。對於 Node.js 22,您應該將目標/lib 更新到 ES2022+ 並考慮遷移到原生 ESM 模組(儘管 CommonJS 仍然可以正常運作)。分析 Dockerfile
要求 Bob 分析專案的 Dockerfile:
@Dockerfile 此 Dockerfile 使用哪個 Node.js 版本?Node.js 22 需要變更什麼?給我一個簡短的摘要。Bob 回應 Node.js 22 需要更新的內容:
**目前 Dockerfile Node.js 版本:** Node 16 Alpine(`node:16-alpine`)
**Node.js 22 所需的變更:**
1. **基礎映像(第 2 行):** `FROM node:16-alpine` → `FROM node:22-alpine`
**摘要:** 只需要變更一行:將基礎映像從 node:16-alpine 更新到 node:22-alpine。Dockerfile 的其餘部分與 Node.js 22 相容,儘管 npm 旗標語法可以現代化現在您了解了需要更新的內容。在下一節中,您切換到 Agent 模式並讓 Bob 進行變更。
使用 Bob 的 Agent 模式現代化 API
Bob 確定了 package.json、tsconfig.json 和 Dockerfile 的以下現代化要求:
- 在 package.json 和 Dockerfile 中將 Node.js 16 變更為 Node.js 22
- 更新 TypeScript 編譯器目標和模組設定
- 修復過時的相依性版本
要開始現代化應用程式,請切換回 Agent 模式,以便 Bob 可以進行程式碼變更。按一下模式選擇器並選擇 Agent。
在 Bob 聊天面板中,執行以下現代化提示。注意指向 Bob 正在處理的特定檔案的 @ 參考:
@package.json @tsconfig.json @Dockerfile
將此 Express API 從 Node.js 16 現代化到 Node.js 22。保持 API 功能相同 - 這是平台升級,而不是功能變更。給我一個簡短的摘要。Bob 為您提供了它在現代化中更新的所有元件的摘要:
Dockerfile — 變更了 2 行
- 兩個 FROM node:16-alpine 階段 → node:22-alpine
package.json — 變更了 3 個欄位
- engines.node: 16.x → 22.x
- @types/node: ^16.18.0 → ^22.0.0
- typescript: ^4.9.5 → ^5.0.0
tsconfig.json — 變更了 4 個設定
- target: ES2020 → ES2023
- lib: ["ES2020"] → ["ES2023"]
- module: commonjs → node16(TypeScript 5 要求這與 moduleResolution 一致)
- moduleResolution: node → node16
您和 Bob 已經現代化了應用程式。
將現代化標記為完成
使用 Bob 的文學編碼功能更新範例 todo 標題,將應用程式標記為已現代化。文學編碼允許您直接在編輯器中與 Bob 一起編寫程式碼,而不是使用聊天面板。
啟用文學編碼模式
在螢幕左側的檔案總管索引標籤中,導覽到 express-todo-api 資料夾並按一下 src/db.ts 以在編輯器中開啟它。開啟 src/db.ts 後,透過按一下編輯器工具列中的魔杖圖示來切換文學編碼模式。或者,您可以在 Mac 上按 Cmd + I,或在 Windows 和 Linux 上按 Ctrl + I。
編寫您的指令
在編輯器中開啟的 src/db.ts 檔案中,在任何程式碼之前將以下指令貼到檔案頂部:
// 找到範例 todo 物件的 title 屬性並將其變更為 "Welcome to the Modernized Node.js 22 API"Bob 理解此註解是指令,而不是常規程式碼,因為您處於文學編碼模式。您的指令在編輯器中反白顯示。
產生程式碼
按一下文件底部的產生。
Bob 在建構函式中找到 sampleTodo 物件並向您顯示變更。您將看到標題從以下變更:
之前:
title: "Learn Node.js modernization"之後:
title: "Welcome to the Modernized Node.js 22 API"接受變更
按一下您按一下產生的文件底部的全部接受以將變更套用於檔案。
結束文學編碼模式
按一下檔案頂部文學魔杖下方的結束以結束文學編碼模式。
您已使用文學編碼更新了 API。當您在下一節中測試 API 時,您將在 API 回應中看到此新標題。
使用 Docker 驗證現代化的應用程式
透過重建和測試 Docker 容器來驗證程式碼現代化和您的文學程式碼變更。
切換回 Agent 模式並描述您希望 Bob 驗證的內容:
透過使用 Docker 建置和測試來驗證現代化的 Node.js 22 應用程式是否有效。檢查 API 是否在 /api/todos 回應並顯示更新的 todo 標題。完成後清理。給我一個簡短的摘要。我還想看到新標題的驗證。Bob 驗證應用程式已現代化後,它會給您以下摘要:
✅ **驗證完成 - Node.js 22 現代化成功**
**建置和測試結果:**
- 使用 Node.js 22 成功建置 Docker 映像
- TypeScript 編譯完成,無錯誤
- 應用程式啟動並正確回應
**API 驗證:**
{
"id": "72459851-7953-4a9c-94d3-4f8f1c656d21",
"title": "Welcome to the Modernized Node.js 22 API",
"completed": false,
"createdAt": "2026-02-16T16:35:49.132Z"
}
**已確認:**
- ✅ 更新的 todo 標題正確顯示:「Welcome to the Modernized Node.js 22 API」
- ✅ API 端點 /api/todos 成功回應
- ✅ 所有功能在 Node.js 22 上執行
- ✅ 清理完成(容器和映像已刪除)
**摘要:** 現代化的 Express TODO API 在 Node.js 22 上完全正常運作,更新的範例資料顯示新標題,確認現代化已完成。API 正常運作,標題已更新為「Welcome to the Modernized Node.js 22 API」,確認 Bob 在現代化 Node.js 版本和相依性的同時保留了現有行為。
後續步驟
在本教學中,您學習了如何使用 Bob 將 Express API 從 Node.js 16 現代化到 Node.js 22。Bob 分析了您的相依性,更新了設定檔,並現代化了 Docker 設定,同時保留了所有功能。
- 了解 Bob 的程式碼審查功能
/review,以在提交工作之前捕獲潛在問題。 - 了解模式,這些是為您的特定任務客製化 Bob 行為的專業角色。
- 了解如何使用 Bob 的聊天介面,這是與 Bob 互動的主要方式。
然後,完成 IBM Bob 入門教學系列以了解有關 Bob 功能和能力的更多資訊。
