できない.dev

ReferenceError

別名: is not defined

ReferenceError は、存在しない(まだ初期化されていない)変数を参照したときに JavaScript が投げる例外。多くは 'x is not defined' というメッセージで現れる。

#referenceerror#javascript#nodejs#error

公開:

定義

ReferenceError は、存在しない変数や、まだ初期化されていない変数を参照したときに JavaScript が投げる例外です。x is not defined という形のメッセージで現れ、名前の打ち間違いだけでなく、その実行環境にそもそも無いグローバルを使ったときにも発生します。

詳細

ブラウザにあって Node.js に無い windowdocument、ESM に無い __dirnamerequire、ビルド前に置換される process.env などは、実行環境が変わると未定義になります。let / const の宣言前にアクセスする一時的デッドゾーン(TDZ)でも ReferenceError が出ます。

よくある誤解

ReferenceError は TypeError とは異なります。
TypeError は「変数は存在するが型や操作が不正」なときで、ReferenceError は「名前そのものが解決できない」ときです。
値として undefined が入っている状態とも別で、その場合は参照自体は成功しています。

関連

ESM で __dirname が使えない、Vite で process が未定義、SSR で window is not defined は、いずれも実行環境にそのグローバルが無いことが原因です。