Das Problem
Ich habe an einem Node.js-Projekt mit TypeScript und Express.js gearbeitet. Irgendwann musste ich ein Benutzerobjekt an das Express Request-Objekt anhängen, aber ich stieß auf diesen TypeScript-Fehler:
Die Eigenschaft „Benutzer“ ist für den Typ „Anfrage“ nicht vorhanden.
Mir wurde schnell klar, dass dies passiert, weil das Standard-Request-Objekt von Express keine Benutzereigenschaft enthält und TypeScript damit nicht zufrieden war.
Mein erster Fix
Um dies zu beheben, habe ich die Request-Schnittstelle erweitert, um die Benutzereigenschaft hinzuzufügen. So habe ich es gemacht:
// src/types/express.d.ts import { User } from '@prisma/client'; // Assuming User is a Prisma model declare global { namespace Express { interface Request { user?: User; // Add user to the Request interface } } }
{ "compilerOptions": { //extra options here "typeRoots": ["./node_modules/@types", "./src/types"] // Add the types folder } }
Zu diesem Zeitpunkt verschwand der Fehler aus meinem Code-Editor, sodass ich dachte, ich hätte das Problem behoben. Aber als ich versuchte, das Projekt auszuführen, stieß ich im Terminal auf einen weiteren Fehler:
Fehler TS2339: Die Eigenschaft „Benutzer“ ist für den Typ „Anfrage“ nicht vorhanden.
Tagelang feststecken
Ich habe drei bis vier Tage damit verbracht, das Problem zu beheben und alles ausprobiert, was ich online finden konnte. Ich steckte völlig fest und konnte nicht herausfinden, warum es nicht funktionierte.
Die Lösung
Schließlich habe ich das Grundproblem entdeckt und es mit den folgenden Schritten behoben:
npm install -g typescript
Führen Sie den TypeScript-Compiler im Überwachungsmodus aus: Ich habe das Flag --watch verwendet, um meinen TypeScript-Code während der Arbeit automatisch neu zu kompilieren:
tsc --watch
Meinen Code-Editor neu starten: Ich habe meinen Editor (in meinem Fall VS-Code) neu gestartet, um sicherzustellen, dass alles ordnungsgemäß geladen wurde.
Projekt ausführen: Nach dem Neustart habe ich das Projekt erneut ausgeführt – und es hat funktioniert!
Fazit
Was ich für ein kleines Problem gehalten hatte, wurde zu tagelanger Frustration, aber endlich habe ich es geschafft! Wenn Sie mit ähnlichen Problemen konfrontiert sind, weil TypeScript neue Eigenschaften im Request-Objekt von Express nicht erkennt, denken Sie an Folgendes:
Erweitern Sie die Anforderungsschnittstelle korrekt.
Stellen Sie sicher, dass der TypeScript-Compiler (tsc) installiert ist und ordnungsgemäß ausgeführt wird.
Hoffentlich hilft das allen anderen, die so feststecken wie ich!
Das obige ist der detaillierte Inhalt vonSo habe ich mein TypeScript-Setup-Problem behoben: Der Eigenschaftsbenutzer ist in der Typanforderung nicht vorhanden.. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!