ホーム › エラー解決 › JavaScript › Cannot read properties of undefined
JavaScript ERROR

JS Cannot read properties of undefined の解決法

undefinedのプロパティにアクセスしたときのエラーです。オプショナルチェーンで安全に書けます。

🔍 どこがundefined? 原因箇所チェッカー

JSONのデータとアクセスしたいパス(例: user.profile.name)を入力すると、パスのどこで undefined になるかを特定します。データは送信されません。

このエラーメッセージ

TypeError: Cannot read properties of undefined (reading 'name')

原因

❌ エラーになるコード

NG
const user = {};
console.log(user.profile.name);

✅ 修正したコード

OK
const user = {};
console.log(user.profile?.name);       // undefined(エラーにならない)
console.log(user.profile?.name ?? "名無し");
▶ 修正済みコードを実行エディタで開く
progoのJavaScript実行環境(インストール不要・登録不要)でその場で動作を確認できます。

解決のポイント

途中の値がundefinedになり得るときはオプショナルチェーン?.を使います。user.profile?.nameならprofileが無くてもエラーにならずundefinedを返します。既定値は?? "名無し"で補えます。

メッセージの読み方

(reading 'name') の 'name' は、アクセスしようとしたプロパティ名です。つまりその手前の値が undefinedということ。user.profile.name でこの表示が出たなら、user.profile が undefined です。まずそこを疑います。

なお Cannot read property 'name' of undefined(単数形・reading 無し)は古いブラウザ/Node の表示で、原因と対処は同じです。

ケース別の直し方

1. 配列の find / map の結果

const found = users.find(u => u.id === 99); // 見つからないと undefined
console.log(found?.name ?? "該当なし");

2. fetch / API のレスポンス

const res = await fetch("/api/user");
const data = await res.json();
console.log(data.items?.[0]?.name);   // items がまだ無くても安全

3. Reactのprops・stateが初回undefined

// 取得前は user が undefined
if (!user) return <p>読み込み中…</p>;
return <p>{user.name}</p>;

4. 分割代入にデフォルト値を置く

const { name = "名無し" } = user ?? {};

原因の行を特定する手順

🧰 他のチェッカー
Pythonインデント診断JS構文エラーチェッカーJSON検証ツール

よくある質問

「properties of undefined」と「property of undefined」の違いは?
原因は同じで、文言がブラウザ/バージョンで違うだけです。新しいChrome/Nodeは properties(複数形)+ (reading 'X')、古い環境は property(単数形)と表示します。
(reading 'name') の 'name' は何?
undefined の値に対してアクセスしようとしたプロパティ名。手前の変数が undefined だという意味です。
nullの場合も同じ?
nullなら「Cannot read properties of null」になります。?. は両方に対応するので対処は同じです。
どの行が原因か分からない
スタックトレース1行目の行番号を開き、その行で . の左側の値を console.log します。
document.getElementByIdでよく出る
要素が見つからないとnullが返ります。IDの綴りや、スクリプトの実行タイミング(DOMContentLoaded、defer属性)を確認してください。