TypeError: Cannot Read Property of Undefined
The code tries to access a property or method on an undefined or null value.
Explanation
This TypeError occurs when you try to access a property or call a method on a value that is undefined or null. For example, accessing obj.name when obj is undefined, or data.items.map() when data.items is undefined. This is one of the most common JavaScript errors. Since JavaScript doesn't stop execution at null/undefined property access, this often cascades from earlier issues. The newer error message says "Cannot read properties of null" which is more specific.
Common Causes
- Variable is undefined or null
- API response missing expected data
- DOM element not found
- Async operation not awaited
- Destructuring from undefined object
Solution
Use optional chaining (?.) operator for safe property access. Check if the object exists before accessing its properties. Use default values with the nullish coalescing operator (??). Initialize objects with expected structure. Validate API responses before using their data. Use destructuring with defaults. For DOM queries, check if the element exists before accessing its properties. Use TypeScript for static type checking.
Code Example
// TypeError when obj is undefined
const user = getUser(id); // might return undefined
console.log(user.name); // TypeError if user is undefined
// Fix: optional chaining (ES2020+)
console.log(user?.name);
// Fix: nullish coalescing
const name = user?.name ?? 'Unknown';
// Fix: explicit check
if (user && user.name) {
console.log(user.name);
}
// DOM example - element not found
document.getElementById('nonexistent').style.color = 'red'; // TypeError!
// Fix
const element = document.getElementById('nonexistent');
if (element) {
element.style.color = 'red';
}
// API response handling
async function getUser(id) {
const response = await fetch(`/api/users/${id}`);
const data = await response.json();
return data?.user?.profile?.name ?? 'Unknown';
}
// Destructuring with defaults
const { name = 'default', email = '' } = user || {};
Error Information
Language
javascript
Difficulty
Beginner
Views
16
Related Errors
ERR_MODULE_NOT_FOUND
Node.js
ERR_MODULE_NOT_FOUND
Node.js cannot find the specified ES module file.
JavaScript
SyntaxError: Unexpected Token
JavaScript parser encountered a token it didn't expect at that position.
Node.js
Unhandled Promise Rejection
A Promise was rejected but no error handler was attached to catch the rejection.
General
Circular Dependency Detected
Module A depends on B which depends on A, creating an unresolvable import cycle.