Cara mengatasi cannot read properties of undefined JavaScript paling cepat adalah menemukan nilai sumber yang masih undefined, lalu perbaiki aksesnya. Buka DevTools, klik baris error, tambahkan console.log tepat sebelum baris itu. Jika nilainya undefined, hentikan akses properti dan perbaiki alur datanya dulu. Pola ini berlaku untuk browser dan Node.js.
Penyebab Cannot Read Properties of Undefined
Pesan ini termasuk TypeError. Kode mencoba membaca properti seperti user.name atau memanggil data.map(), padahal variabel induknya bernilai undefined.
- Respons API belum datang, tetapi kode langsung membaca data.user.name.
- Parameter fungsi tidak dikirim, lalu dipakai sebagai object.
- Object bersarang diakses terlalu dalam, misalnya res.data.items[0].title.
- Elemen DOM tidak ketemu sehingga querySelector menghasilkan null, lalu kode membaca propertinya.
- Salah tulis nama properti, salah indeks array, atau array masih kosong.
Tabel Troubleshooting Error per Kondisi
Bedakan dulu jenis errornya. ReferenceError berarti variabel belum dideklarasikan. JSON parse error berarti format JSON salah. TypeError ini berarti variabel ada, tetapi nilainya undefined atau null.
| Error/Kondisi | Penyebab | Solusi |
|---|---|---|
| Cannot read properties of undefined (reading ‘name’) | Object induk belum ada | Cek object sebelum akses, perbaiki urutan data |
| Cannot read properties of undefined (reading ‘map’) | Data belum berupa array | Pastikan array ada, beri nilai awal [] |
| Cannot read properties of null (reading ‘value’) | querySelector tidak menemukan elemen | Periksa id, selector, dan waktu eksekusi DOM |
| Error setelah fetch API | Struktur respons berbeda dari dugaan | console.log respons mentah, cek response.ok dan struktur JSON |
Cara Memperbaiki dengan Langkah Bernomor
Ikuti urutan ini supaya tidak menebak.
- Buka console browser atau terminal Node.js, lalu klik nomor baris pada pesan error.
- Tambahkan console.log untuk variabel sumber tepat sebelum baris error.
- Perbaiki sumber data, bukan hanya baris errornya.
- Tambahkan pengaman seperlunya setelah penyebab jelas.
// Salah: user bisa undefined
console.log(user.name);
// Benar
if (!user) {
console.log('user belum tersedia');
} else {
console.log(user.name);
}
// Akses aman untuk object bersarang
const nama = user?.profile?.name ?? 'Tanpa nama';
// Guard untuk fetch API
const res = await fetch('/api/user');
if (!res.ok) throw new Error('Gagal memuat data: ' + res.status);
const data = await res.json();
console.log(data?.user?.name);
Kode di atas memakai optional chaining untuk mencegah crash dan nullish coalescing untuk nilai cadangan. Untuk DOM, pastikan script berjalan setelah elemen tersedia atau letakkan script di akhir body.
Cara Mencegah Error Terulang
- Validasi object sebelum membaca properti dalam, terutama data dari API.
- Berikan nilai awal: {} untuk object, [] untuk array, string kosong untuk teks.
- Gunakan early return bila data wajib belum tersedia.
- Periksa response.ok sebelum memanggil response.json().
- Periksa hasil getElementById dan querySelector sebelum memakai value, textContent, atau classList.
FAQ
Apa arti cannot read properties of undefined?
Artinya kode membaca properti dari nilai undefined, biasanya karena data belum siap atau nama properti salah.
Apakah optional chaining selalu cukup?
Tidak. Ia mencegah crash, tetapi sumber data yang kosong tetap perlu diperbaiki.
Kenapa error muncul setelah fetch API?
Umumnya struktur JSON berbeda dari perkiraan atau respons gagal sehingga data yang diakses tidak ada.