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
14
Related Errors
Frontend
Webpack Module Not Found
Webpack cannot resolve a module or file imported in the code.
Frontend
Hydration Mismatch (SSR)
The server-rendered HTML doesn't match what the client-side JavaScript expected to render.
JavaScript
ReferenceError: X is not defined
The code references a variable or function that hasn't been declared.
ERESOLVE
JavaScript
npm ERESOLVE Unable to Resolve Dependency Tree
npm cannot install a package due to conflicting dependency requirements.