Tutorials

Eine Node.js-Anwendung modernisieren

Lernen Sie, IBM Bob für die Anwendungsmodernisierung zu verwenden, indem Sie eine Node.js Express API von Version 16 auf 22 aktualisieren. Probieren Sie KI-gestützte Entwicklung mit Modi, Genehmigungen und literarischer Programmierung in diesem praktischen Tutorial aus.

Einführung

Bob ist ein KI-SDLC-Partner (Software Development Lifecycle), der Ihre bestehenden Workflows erweitert. In diesem Tutorial lernen Sie einige der Kernfunktionen von Bob kennen, indem Sie eine TypeScript Express API von Node.js 16 auf Node.js 22 modernisieren. Sie benötigen keine Erfahrung mit Node.js oder TypeScript, um das Tutorial abzuschließen. Sie lernen, wie Bob Abhängigkeiten analysiert und Code-Muster modernisiert.

Wichtige Funktionen, die Sie lernen werden

Bob bietet vier wesentliche Funktionen, die Sie beim Upgrade der API verwenden werden:

  • Modi: Spezialisierte Personas, die Bobs Verhalten für bestimmte Aufgaben anpassen.
  • Kontext-Erwähnungen: Verweisen Sie in Gesprächen mit Bob auf bestimmte Projektelemente wie Dateien, Ordner oder Git-Commits.
  • Genehmigungsworkflow: Überprüfen Sie jedes Tool, das Bob verwenden möchte, bevor es ausgeführt wird.
  • Literarische Programmierung: Schreiben Sie Code mit Bob direkt in Ihrem Editor. Geben Sie Anweisungen in einfacher Sprache genau dort ein, wo der Code stehen soll.

Voraussetzungen

Dieses Tutorial verwendet eine TypeScript Express REST API als Beispielprojekt. Sie benötigen jedoch keine Erfahrung mit Node.js oder TypeScript.

Um dieses Tutorial abzuschließen, benötigen Sie Folgendes:

  • Docker installiert und auf Ihrer Workstation ausgeführt. Sie verwenden Bob, um ein Dockerfile für die Anwendung zu erstellen.
  • Bob IDE installiert.
  • Sie haben das Quickstart-Tutorial abgeschlossen, um sich mit Bobs Oberfläche und Funktionen vertraut zu machen.
  • Möglicherweise möchten Sie für dieses Tutorial ein neues Kontextfenster starten. Anweisungen finden Sie im Tutorial zum Erstellen eines neuen Kontextfensters.

Richten Sie Ihren Arbeitsbereich ein

Starten Sie IBM Bob und klonen Sie das Beispiel-Repository, um mit der Node.js-Anwendung zu arbeiten, die Sie modernisieren werden.

Starten Sie IBM Bob

Starten Sie die IBM Bob-Anwendung auf Ihrem Computer.

Öffnen Sie die Bob-Seitenleiste

Wenn die Bob-Seitenleiste noch nicht geöffnet ist, öffnen Sie sie, indem Sie auf das Bob-Symbol neben der Navigationsleiste klicken oder die Tastenkombination Option + Command + B (Mac) oder Ctrl + Alt + B (Windows) verwenden.

Bob-Seitenleiste in IBM Bob IDE geöffnet

Klonen Sie das Tutorial-Repository

Klonen Sie das Repository mit der Beispielanwendung, indem Sie auf das Dateisymbol oben links im Bob IDE-Panel klicken. Klicken Sie dann auf Repository klonen und fügen Sie das folgende GitHub-Repository in die Suchleiste ein. Bob fragt Sie, wo Sie das Repository speichern möchten. Sie können es speichern, wo Sie möchten.

https://github.com/IBM/bob-demo.git

Klonen des Repositorys in Bob IDE

Öffnen Sie das Repository

Wenn Bob Sie fragt, ob Sie das geklonte Repository öffnen möchten, klicken Sie auf Öffnen. Wenn Bob fragt "Vertrauen Sie den Autoren der Dateien in diesem Ordner?", klicken Sie auf Ja, ich vertraue den Autoren.

Beachten Sie die Projektdateien im Explorer und das Bob-Chat-Panel an der Seite.

Projektdateien im Explorer mit Bob-Chat-Panel angezeigt

Deaktivieren Sie die automatische Genehmigung

Stellen Sie sicher, dass die automatische Genehmigung deaktiviert ist. Diese Einstellung finden Sie unter Berechtigungen. Wenn die automatische Genehmigung deaktiviert ist, fragt Bob um Erlaubnis, bevor es vorgeschlagene Änderungen ausführt. So behalten Sie die Kontrolle über alle Änderungen an Ihrer Codebasis.

Erstellen Sie die containerisierte Umgebung

Erstellen Sie ein Dockerfile, um die Anwendung in einer containerisierten Umgebung auszuführen, wodurch die lokale Installation von Node.js oder Abhängigkeiten entfällt.

Wechseln Sie in den Agenten-Modus

Wechseln Sie Bob in den Agenten-Modus, indem Sie auf das Dropdown-Menü zur Modusauswahl klicken und Agent auswählen.

Modi sind eine Möglichkeit, wie Bob das Prinzip der geringsten Privilegien respektiert. Jeder Modus gibt Bob die Erlaubnis, eine bestimmte Reihe von Aufgaben in Ihrem Namen vorzuschlagen. Der Agenten-Modus ermöglicht es Bob, Code zu schreiben, zu ändern und zu refaktorisieren. Bob fragt weiterhin vor jeder Operation um Erlaubnis.

Erstellen Sie das Dockerfile

Geben Sie die folgende Eingabeaufforderung in der Bob-Chat-Oberfläche ein, um Bob zu bitten, das Dockerfile zu erstellen.

Erstelle ein Dockerfile für diese Node.js TypeScript-Anwendung.
Es sollte Node 16 verwenden, um der aktuellen Anwendungsversion zu entsprechen, den TypeScript-Code erstellen und die App auf Port `3000` ausführen.

Bob fordert Lesezugriff auf mehrere Dateien an, um die Anforderungen für das Dockerfile zu verstehen. Klicken Sie auf Genehmigen, um Bob die Erlaubnis zu erteilen, diese Dateien zu lesen.

Bob bestimmt die geeignete Dockerfile-Struktur und zeigt Ihnen die vorgeschlagene Datei. Aktionsschaltflächen erscheinen über dem Chat-Eingabefeld. Klicken Sie auf Speichern, um die Datei zu erstellen. Speichern schreibt oder ändert Dateien in Ihrem Projekt. Später in diesem Tutorial aktualisiert Bob das Dockerfile, um Node 22 zu verwenden.

Überprüfen Sie, ob die Legacy-Anwendung erstellt wird

Bevor Sie modernisieren, überprüfen Sie, ob der Legacy-Code korrekt erstellt wird und läuft. Diese Baseline stellt sicher, dass Sie alle Probleme identifizieren können, die die Modernisierung einführt.

Während der Build-Phase teilt Bob Ihnen mit, dass der Build fehlgeschlagen ist, weil das Dockerfile npm ci verwendet, was eine package-lock.json-Datei erfordert, die nicht existiert.

Sagen Sie Bob im Bob-Chat-Panel, dass es die Anwendung erstellen und testen soll.

Erstelle und teste die Legacy-Anwendung mit Docker, um zu überprüfen, ob sie vor der Modernisierung korrekt funktioniert. Die Anwendung sollte auf API-Anfragen unter /api/todos mit Beispieldaten antworten

Räume nach dem Testen den Container auf.

Bob bittet Sie, eine Änderung am Dockerfile zu speichern, die das package-lock.json-Problem mit der folgenden Nachricht behebt:

Der Build ist fehlgeschlagen, weil es keine package-lock.json-Datei gibt. Ich muss das Dockerfile aktualisieren, um `npm install` anstelle von `npm ci` zu verwenden. Lass mich das beheben.

Bobs Fähigkeit, Build-Fehler zu erkennen und zu beheben, ist ein Beispiel dafür, wie es mit Ihnen zusammenarbeitet, um Probleme während Bereitstellungen zu beheben und zu lösen.

Sobald Bob die Korrektur anwendet und den Build abschließt, wird eine Zusammenfassung der Build- und Testergebnisse angezeigt, die bestätigt, dass die Legacy-Anwendung korrekt in einer containerisierten Umgebung funktioniert. Sie haben nun eine verifizierte Baseline, mit der Sie nach der Modernisierung der Anwendung im nächsten Abschnitt vergleichen können.

Sie und Bob haben überprüft, dass die Legacy-Anwendung korrekt funktioniert.

Erkunden Sie die Node.js-Codebasis mit Bobs Ask-Modus

Bevor Sie modernisieren, klicken Sie auf das Dropdown-Menü zur Modusauswahl und wechseln Sie zu Bobs Ask-Modus. Der Ask-Modus kann nur Dateien lesen, sodass Sie Code sicher erkunden können, ohne versehentlich Änderungen vorzunehmen. Sie können auch /ask im Bob-Chat eingeben, um in den Ask-Modus zu wechseln.

Verwenden Sie @ Kontext-Erwähnungen, um das Projekt zu überprüfen

Bob unterstützt @ Kontext-Erwähnungen, mit denen Sie bestimmte Dateien, Ordner oder Probleme direkt in Ihren Eingabeaufforderungen referenzieren können. Kontext-Erwähnungen geben Bob präzise Informationen darüber, worüber Sie sprechen möchten.

Erkunden Sie die Dateien package.json, tsconfig.json und Dockerfile, indem Sie Bob explizit mitteilen, welche Dateien es mit @ Erwähnungen analysieren soll. Das Lernen über diese Dateien hilft Ihnen, die Modernisierungsanforderungen zu verstehen, bevor Sie Änderungen vornehmen.

Führen Sie im Bob-Chat-Panel die folgende Eingabeaufforderung aus:

@package.json Welche Node.js-Version verwendet dieses Projekt? Welche Abhängigkeiten müssten für Node.js 22 aktualisiert werden? Gib mir eine kurze Zusammenfassung.

Das @-Symbol teilt Bob mit, package.json als Kontext einzubeziehen. Bob beginnt nicht sofort mit der Beantwortung; es erkundet zuerst Ihre Codebasis, liest Dateien, folgt Mustern und analysiert Code. Unterbrechen Sie diese Erkundungsphase nicht.

Bob identifiziert die folgenden für Node.js 22 erforderlichen Updates:

**Aktuelle Node.js-Version:** 16.x

**Abhängigkeiten, die für Node.js 22 aktualisiert werden müssen:**

1. **@types/node**: ^16.18.0 → ^22.x.x (TypeScript-Typen für Node.js 22)
2. **typescript**: ^4.9.5 → ^5.x.x (TypeScript 5+ für bessere Node.js 22-Unterstützung)
3. **ts-node**: ^10.9.1 → ^10.9.2+ (Kompatibilität mit TS 5 und Node 22 sicherstellen)

**Bereits kompatible Abhängigkeiten:**
- **express**: ^4.18.2 ✓ (funktioniert mit Node.js 22)
- **uuid**: ^9.0.0 ✓ (funktioniert mit Node.js 22)
- **@types/express**: ^4.17.17 ✓ (kompatibel)
- **@types/uuid**: ^9.0.0 ✓ (kompatibel)

**Zusammenfassung:** Nur die Node.js-spezifischen Dev-Abhängigkeiten müssen aktualisiert werden. Die Laufzeitabhängigkeiten (Express, UUID) sind bereits mit Node.js 22 kompatibel.

Analysieren Sie die TypeScript-Konfiguration

Bitten Sie Bob, die TypeScript-Konfiguration des Projekts zu analysieren:

@tsconfig.json Welches Modulsystem und welche Compiler-Einstellungen verwendet dieses TypeScript-Projekt? Welche Abhängigkeiten müssten für Node.js 22 aktualisiert werden? Gib mir eine kurze Zusammenfassung.

Bob antwortet mit den folgenden Komponenten, die Sie für Node.js 22 aktualisieren müssen:

**Aktuelle TypeScript-Konfiguration:**

**Modulsystem:** CommonJS (`"module": "commonjs"`)
- Traditionelles Node.js-Modulsystem mit `require()` und `module.exports`
- Ausgabe: `.js`-Dateien mit CommonJS-Syntax

**Compiler-Einstellungen:**
- **Target:** ES2020 (kompiliert zu ES2020 JavaScript)
- **Lib:** ES2020 (verwendet ES2020-Standardbibliotheksfunktionen)
- **Module Resolution:** Node (Standard-Node.js-Auflösungsalgorithmus)
- **Strict Mode:** Aktiviert (vollständige Typprüfung)

**Empfohlene Updates für Node.js 22:**

1. **target**: ES2020 → **ES2022** oder **ESNext** (neuere JS-Funktionen nutzen)
2. **lib**: ES2020 → **ES2022** (auf neuere APIs zugreifen)
3. **module**: Erwägen Sie die Migration zu **"node16"** oder **"nodenext"** für native ESM-Unterstützung
4. **moduleResolution**: "node" → **"node16"** oder **"bundler"** (bessere moderne Auflösung)

**Zusammenfassung:** Das Projekt verwendet Legacy-CommonJS mit ES2020-Ziel. Für Node.js 22 sollten Sie das Ziel/Lib auf ES2022+ aktualisieren und eine Migration zu nativen ESM-Modulen in Betracht ziehen (obwohl CommonJS immer noch gut funktioniert).

Analysieren Sie das Dockerfile

Bitten Sie Bob, das Dockerfile des Projekts zu analysieren:

@Dockerfile Welche Node.js-Version verwendet dieses Dockerfile? Was müsste sich für Node.js 22 ändern? Gib mir eine kurze Zusammenfassung.

Bob antwortet mit dem, was für Node.js 22 aktualisiert werden muss:

**Aktuelle Dockerfile Node.js-Version:** Node 16 Alpine (`node:16-alpine`)

**Für Node.js 22 erforderliche Änderungen:**

1. **Basis-Image (Zeile 2):** `FROM node:16-alpine` → `FROM node:22-alpine`

**Zusammenfassung:** Nur eine Zeilenänderung erforderlich: Basis-Image von node:16-alpine auf node:22-alpine aktualisieren. Der Rest des Dockerfiles ist mit Node.js 22 kompatibel, obwohl die npm-Flag-Syntax modernisiert werden könnte

Sie verstehen jetzt, was aktualisiert werden muss. Im nächsten Abschnitt wechseln Sie in den Agenten-Modus und lassen Bob die Änderungen vornehmen.

Modernisieren Sie die API mit Bobs Agenten-Modus

Bob hat die folgenden Modernisierungsanforderungen für package.json, tsconfig.json und Dockerfile ermittelt:

  • Ändern Sie Node.js 16 zu Node.js 22 in package.json und Dockerfile
  • Aktualisieren Sie die TypeScript-Compiler-Ziel- und Moduleinstellungen
  • Beheben Sie veraltete Abhängigkeitsversionen

Um mit der Modernisierung der Anwendung zu beginnen, wechseln Sie zurück in den Agenten-Modus, damit Bob Code-Änderungen vornehmen kann.

Führen Sie in der Bob-Chat-Oberfläche die folgende Modernisierungseingabeaufforderung aus. Beachten Sie die @-Referenzen, die Bob auf die spezifischen Dateien hinweisen, an denen es arbeitet:

@package.json @tsconfig.json @Dockerfile

Modernisiere diese Express API von Node.js 16 auf Node.js 22. Halte die API-Funktionalität identisch - dies ist ein Plattform-Upgrade, keine Funktionsänderung. Gib mir eine kurze Zusammenfassung.

Nachdem Bob die Aktualisierungen und Tests abgeschlossen hat, wird eine Zusammenfassung ähnlich der folgenden angezeigt:

Dockerfile — 2 Zeilen geändert

- Beide FROM node:16-alpine-Stufen → node:22-alpine

package.json — 3 Felder geändert

- engines.node: 16.x → 22.x
- @types/node: ^16.18.0 → ^22.0.0
- typescript: ^4.9.5 → ^5.0.0

tsconfig.json — 4 Einstellungen geändert

- target: ES2020 → ES2023
- lib: ["ES2020"] → ["ES2023"]
- module: commonjs → node16 (TypeScript 5 erfordert, dass dies mit moduleResolution übereinstimmt)
- moduleResolution: node → node16

Sie und Bob haben die Anwendung modernisiert.

Markieren Sie die Modernisierung als abgeschlossen

Verwenden Sie Bobs literarische Programmierung-Funktion, um den Beispiel-Todo-Titel zu aktualisieren und die App als modernisiert zu markieren. Literarische Programmierung ermöglicht es Ihnen, Anweisungen in einfacher Sprache direkt in Ihrem Editor zu schreiben, anstatt das Chat-Panel zu verwenden.

Aktivieren Sie den literarischen Programmiermodus

Navigieren Sie in der Explorer-Registerkarte auf der linken Seite des Bildschirms zum Ordner express-todo-api und klicken Sie auf src/db.ts, um es im Editor zu öffnen. Sobald Sie src/db.ts geöffnet haben, aktivieren Sie den literarischen Programmiermodus, indem Sie auf das Zauberstab-Symbol in der Editor-Symbolleiste klicken. Alternativ können Sie Cmd + I auf Mac oder Ctrl + I auf Windows und Linux drücken.

Schreiben Sie Ihre Anweisung

Fügen Sie in der Datei src/db.ts, die in Ihrem Editor geöffnet ist, die folgende Anweisung oben in der Datei vor jedem Code ein:

// Finde die title-Eigenschaft des Beispiel-Todo-Objekts und ändere sie zu "Welcome to the Modernized Node.js 22 API"

Bob versteht, dass dieser Kommentar eine Anweisung ist und kein regulärer Code, weil Sie sich im literarischen Programmiermodus befinden. Ihre Anweisung erscheint im Editor hervorgehoben.

Generieren Sie den Code

Klicken Sie auf Generieren am unteren Rand des Dokuments.

Bob lokalisiert das sampleTodo-Objekt im Konstruktor und zeigt Ihnen die Änderung. Sie sehen die Titeländerung von:

Vorher:

title: "Learn Node.js modernization"

Nachher:

title: "Welcome to the Modernized Node.js 22 API"

Akzeptieren Sie die Änderungen

Klicken Sie auf Alle akzeptieren am unteren Rand des Dokuments, wo Sie auf Generieren geklickt haben, um die Änderung auf die Datei anzuwenden.

Verlassen Sie den literarischen Programmiermodus

Klicken Sie auf Beenden unter dem literarischen Zauberstab oben in der Datei, um den literarischen Programmiermodus zu verlassen.

Sie haben die API mit literarischer Programmierung aktualisiert. Wenn Sie die API im folgenden Abschnitt testen, sehen Sie diesen neuen Titel in der API-Antwort.

Überprüfen Sie die modernisierte Anwendung mit Docker

Überprüfen Sie die Code-Modernisierung und Ihre literarische Code-Änderung, indem Sie den Docker-Container neu erstellen und testen.

Wechseln Sie zurück in den Agenten-Modus und beschreiben Sie, was Bob überprüfen soll:

Überprüfe, ob die modernisierte Node.js 22-Anwendung funktioniert, indem du sie mit Docker erstellst und testest. Prüfe, ob die API unter /api/todos antwortet und den aktualisierten Todo-Titel anzeigt. Räume auf, wenn du fertig bist. Gib mir eine kurze Zusammenfassung. Ich möchte auch die Validierung des neuen Titels sehen.

Sobald Bob überprüft hat, dass die Anwendung modernisiert wurde, gibt es Ihnen die folgende Zusammenfassung:

✅ **Überprüfung abgeschlossen - Node.js 22-Modernisierung erfolgreich**

**Build- und Testergebnisse:**
- Docker-Image erfolgreich mit Node.js 22 erstellt
- TypeScript-Kompilierung ohne Fehler abgeschlossen
- Anwendung gestartet und korrekt geantwortet

**API-Validierung:**
{
  "id": "72459851-7953-4a9c-94d3-4f8f1c656d21",
  "title": "Welcome to the Modernized Node.js 22 API",
  "completed": false,
  "createdAt": "2026-02-16T16:35:49.132Z"
}

**Bestätigt:**
- ✅ Aktualisierter Todo-Titel wird korrekt angezeigt: "Welcome to the Modernized Node.js 22 API"
- ✅ API-Endpunkt /api/todos antwortet erfolgreich
- ✅ Alle Funktionen funktionieren auf Node.js 22
- ✅ Aufräumen abgeschlossen (Container und Image entfernt)

**Zusammenfassung:** Die modernisierte Express TODO API ist vollständig funktionsfähig auf Node.js 22 mit den aktualisierten Beispieldaten, die den neuen Titel zeigen und bestätigen, dass die Modernisierung abgeschlossen ist.

Die API funktioniert korrekt, und der Titel wurde auf "Welcome to the Modernized Node.js 22 API" aktualisiert, was bestätigt, dass Bob das bestehende Verhalten beibehalten hat, während die Node.js-Version und Abhängigkeiten modernisiert wurden.

Nächste Schritte

In diesem Tutorial haben Sie gelernt, wie Sie eine Express API von Node.js 16 auf Node.js 22 mit Bob modernisieren. Bob hat Ihre Abhängigkeiten analysiert, Konfigurationsdateien aktualisiert und das Docker-Setup modernisiert, während alle Funktionen erhalten blieben.

  • Erfahren Sie mehr über Bobs Code-Review-Funktion /review, um potenzielle Probleme zu erkennen, bevor Sie Ihre Arbeit committen.
  • Erfahren Sie mehr über Modi, die spezialisierte Personas sind, die Bobs Verhalten für Ihre spe
Wie ist dieses Thema?