{
“@context”: “https://schema.org”,
“@type”: “TechArticle”,
“headline”: “TypeError kann die Eigenschaft von „Undefiniert“ in JavaScript nicht lesen: Vollständiger Debug-Leitfaden”,
“description”: “Beheben Sie jede Variante von TypeError: Eigenschaften von undefiniert in JavaScript können nicht gelesen werden – Grundursachen, Debugging-Schritte und Prävention mit optionaler Verkettung.”,
“url”: “https://techpulsesite.com/typeerror-cannot-read-property-of-undefi-de/”,
“datePublished”: “2026-06-27T16:20:00+00:00”,
“dateModified”: “2026-06-29T04:14:23+00:00”,
“author”: {
“@type”: “Organization”,
“name”: “TechPulse Editorial Team”,
“url”: “https://techpulsesite.com”
},
“publisher”: {
“@type”: “Organization”,
“name”: “TechPulse”,
“url”: “https://techpulsesite.com”
},
“inLanguage”: “de”
}
{
“@context”: “https://schema.org”,
“@type”: “TechArticle”,
“headline”: “TypeError kann die Eigenschaft von „Undefiniert“ in JavaScript nicht lesen: Vollständiger Debug-Leitfaden”,
“description”: “Beheben Sie jede Variante von TypeError: Eigenschaften von undefiniert in JavaScript können nicht gelesen werden – Grundursachen, Debugging-Schritte und Prävention mit optionaler Verkettung.”,
“url”: “https://techpulsesite.com/typeerror-cannot-read-property-of-undefi-de/”,
“datePublished”: “2026-06-27T16:20:00+00:00”,
“dateModified”: “2026-06-21T06:05:14+00:00”,
“author”: {
“@type”: “Organization”,
“name”: “TechPulse Editorial Team”,
“url”: “https://techpulsesite.com”
},
“publisher”: {
“@type”: “Organization”,
“name”: “TechPulse”,
“url”: “https://techpulsesite.com”
},
“inLanguage”: “de”
}
TypeError: Eigenschaften von undefiniert (lesend ‘x’)können nicht gelesen werden ist der häufigste JavaScript-Fehler. Das bedeutet, dass Sie versuchen, auf eine Eigenschaft mit dem Wertundefinedzuzugreifen – als würde manuser.namerufen wennuser is undefined. Hier finden Sie alle Ursachen und Lösungen.
📋 Table of Contents
- Was der Fehler tatsächlich bedeutet
- Ursache 1: Asynchrone Daten wurden noch nicht geladen
- Ursache 2: Falsch geschriebene Eigenschaft oder Schlüssel
- Ursache 3: Array-Element existiert nicht
- Ursache 4: Funktion gibt Undefiniert
- zurück Ursache 5: Zugriff auf verschachtelte Objekte
- Die Lösung: Optionale Verkettung (?.) und Nullish Coalescing (??)
- Debugging-Schritte, wenn dieser Fehler angezeigt wird
- Reaktionsspezifische Muster
- TypeScript: Diese zur Kompilierungszeit abfangen
- Häufig gestellte Fragen
- Fazit
Was der Fehler tatsächlich bedeutet
// The error occurs here:
const name = user.name;
// TypeError: Cannot read properties of undefined (reading 'name')
// Because:
let user = undefined;
console.log(user); // undefined
console.log(user.name); // ❌ TypeError
JavaScript kann nur auf Eigenschaften von Objekten zugreifen. undefined undnull sind keine Objekte. Der Versuch, auf eine Eigenschaft darauf zuzugreifen, löst einen TypeError aus.
Ursache 1: Asynchrone Daten wurden noch nicht geladen
// 🐛 Bug: accessing data before it's available
const [user, setUser] = useState(); // undefined initially
return {user.name}; // ❌ renders before fetch completes
// ✅ Fix 1: Default value in useState
const [user, setUser] = useState(null);
return {user?.name}; // optional chaining
// ✅ Fix 2: Conditional rendering
if (!user) return Loading...;
return {user.name};
Ursache 2: Falsch geschriebene Eigenschaft oder Schlüssel
const response = {
data: { users: [...] }
};
// 🐛 Bug: wrong key name
console.log(response.Data.users); // ❌ 'Data' (capital D) doesn't exist → undefined.users
// ✅ Fix: check the actual shape
console.log(response); // inspect the full object first
console.log(response.data.users); // ✅ correct
Ursache 3: Array-Element existiert nicht
const users = [];
// 🐛 Bug: accessing index that doesn't exist
console.log(users[0].name); // ❌ users[0] is undefined
// ✅ Fix: check length first
if (users.length > 0) {
console.log(users[0].name);
}
// ✅ Fix: optional chaining on array access
console.log(users[0]?.name); // returns undefined instead of throwing
Ursache 4: Funktion gibt Undefiniert
// 🐛 Bug: function doesn't explicitly return a value
function getUser(id) {
if (id === 1) {
return { name: "Alice" };
}
// no return for other ids → returns undefined
}
const user = getUser(2);
console.log(user.name); // ❌ user is undefined
// ✅ Fix: always return a value or handle the undefined case
function getUser(id) {
if (id === 1) return { name: "Alice" };
return null; // explicit null is better than undefined
}
const user = getUser(2);
if (user) console.log(user.name);
zurück Ursache 5: Zugriff auf verschachtelte Objekte
const config = {
database: {
host: "localhost"
}
};
// 🐛 Bug: accessing deeply nested path where intermediate is missing
console.log(config.cache.ttl); // ❌ config.cache is undefined
// ✅ Fix 1: Optional chaining (ES2020, supported everywhere in 2026)
console.log(config.cache?.ttl); // undefined (no error)
// ✅ Fix 2: Nullish coalescing with default value
const ttl = config.cache?.ttl ?? 300; // returns 300 if undefined/null
// ✅ Fix 3: Destructuring with defaults
const { cache: { ttl = 300 } = {} } = config;
Die Lösung: Optionale Verkettung (?.) und Nullish Coalescing (??)
// Optional chaining: access property only if parent is not null/undefined
const name = user?.name; // undefined if user is null/undefined
const city = user?.address?.city; // safely access nested path
const first = arr?.[0]; // safe array access
const val = obj?.method?.(); // safe method call
// Nullish coalescing: provide default for null/undefined
const displayName = user?.name ?? "Anonymous"; // "Anonymous" if name is null/undefined
// NOT the same as || (which treats 0, "", false as falsy)
const count = data.count ?? 0; // 0 if null/undefined, but keeps 0 if data.count IS 0
const count2 = data.count || 0; // returns 0 even if data.count is 0 (wrong!)
Debugging-Schritte, wenn dieser Fehler angezeigt wird
- Lesen Sie die Fehlermeldung vollständig: „Eigenschaften von undefiniert können nicht gelesen werden (‚Name‘ wird gelesen)“ sagt Ihnen, dass es sich um
namehandelt auf etwas Undefiniertes zugegriffen werden. - Überprüfen Sie den Stack-Trace: Die Zeilennummer zeigt genau wohin. Klicken Sie in den DevTools des Browsers darauf, um zum Code zu springen.
- Protokollieren Sie den übergeordneten Wert:
console.log(user)direkt vor der Ausfalllinie. Sehen Sie, was es tatsächlich ist. - Prüfen Sie, wann die Daten verfügbar sind: Sind das asynchrone Daten? Wird die Komponente gerendert, bevor der Abruf abgeschlossen ist?
- Suchen Sie nach der Stelle, an der der Wert festgelegt ist: Finden Sie jeden Ort
user(oder was auch immer undefiniert ist) zugewiesen wird. Eine dieser Aufgaben besteht darin, Undefiniertes zu produzieren.
Reaktionsspezifische Muster
// Pattern 1: Initial state with loading
function UserCard({ userId }) {
const [user, setUser] = useState(null);
const [loading, setLoading] = useState(true);
useEffect(() => {
fetchUser(userId).then(data => {
setUser(data);
setLoading(false);
});
}, [userId]);
if (loading) return ;
if (!user) return User not found;
return {user.name}; // safe — user is guaranteed to exist
}
// Pattern 2: Optional chaining in JSX
function UserCard({ user }) {
return (
<div>
<h1>{user?.name ?? "Unknown"}</h1>
<p>{user?.email ?? "No email"}</p>
</div>
);
}
TypeScript: Diese zur Kompilierungszeit abfangen
// TypeScript with strict null checks
interface User {
name: string;
email?: string; // optional property
}
function greet(user: User | null | undefined) {
// TypeScript error: 'user' is possibly 'null' or 'undefined'
console.log(user.name); // ❌ compile error
// TypeScript forces you to handle null cases
console.log(user?.name); // ✅ safe
}
// Enable strict null checks in tsconfig.json:
// "strictNullChecks": true (enabled by default with "strict": true)
Häufig gestellte Fragen
F: Was ist der Unterschied zwischen undefiniert und null?
A: undefined bedeutet, dass eine Variable deklariert, aber nie ein Wert zugewiesen wurde. null ist ein absichtliches Fehlen eines Werts, den ein Entwickler explizit festgelegt hat. Beide lösen TypeError aus, wenn Sie auf ihre Eigenschaften zugreifen.
F: Sollte ich überall optionale Verkettung verwenden?
A: Verwenden Sie es dort, wo Werte tatsächlich undefiniert sein könnten. Übermäßiger Gebrauch (Verkettung von allem) verbirgt Fehler – Sie bevorzugen möglicherweise einen expliziten Fehler, wenn etwas, das existieren sollte, nicht vorhanden ist.
F: Warum verhindert TypeScript nicht alle diese Fehler?
A: TypeScript fängt die meisten davon zur Kompilierungszeit ab, wenn der strikte Modus aktiviert ist. Aber TypeScript verfügt über Escape-Schraffuren (asCasting,!Nicht-Null-Zusicherungen), die Prüfungen umgehen können. Außerdem sind Daten von APIsany standardmäßig, es sei denn, Sie bestätigen es.
F: Welche Auswirkungen hat die optionale Verkettung auf die Leistung?
A: Vernachlässigbar. Die optionale Verkettung führt zu einer einfachen Nullprüfung:user === null || user === undefined ? undefined : user.name. Keine Leistungsbedenken.
F: Wie gehe ich sauber mit tief verschachtelten optionalen Daten um?
A: Verwenden Sie die optionale Verkettung:a?.b?.c?.d. Für komplexe Datentransformationen eignen sich Bibliotheken wie_.get(obj, 'a.b.c', defaultValue)von Lodash oder immer kann helfen. Verwenden Sie für API-Antworten eine Validierungsbibliothek wie Zod, um die Form zu garantieren.
Fazit
TypeError: „Eigenschaften von undefiniert können nicht gelesen werden“ wird immer dadurch verursacht, dass auf eine Eigenschaft zugegriffen wird, bevor überprüft wird, ob der Wert vorhanden ist. Die Lösung für 2026 lautetoptionale Verkettung (?.) kombiniert mit nullischer Koaleszierung (??)für Standardwerte, striktem TypeScript-Modus für Sicherheit bei der Kompilierung und defensiven Codierungsmustern für asynchrone Daten (Ladestatus anzeigen, Null explizit behandeln). Sobald Sie „Überprüfen, bevor Sie darauf zugreifen“ verinnerlichen, wird dieser Fehler in Ihrem Code selten.
🔗 Share this article
✍️ Leave a Comment