ESLint を実行した際に、次のようなエラーを見たことがある人は多いでしょう。
Definition for rule 'react/jsx-uses-react' was not found
このエラーは、指定したルールを ESLint が見つけられない ことを意味しています。主な原因は、プラグインや設定ファイルの バージョン不整合 や 設定ミス にあります。
この記事では、原因別に詳しく分析し、正しい確認手順と解決策を紹介します。
エラーの意味
「Definition for rule ‘xxx’ was not found」は、ESLint の設定ファイル(.eslintrc など)で定義されたルール名に対応する実装が存在しないことを示します。
つまり、設定ファイルに次のような記述があるのに、ESLint がそのルールを提供するプラグインを読み込めていない状態です。
{
"rules": {
"react/jsx-uses-react": "error"
}
}
主な原因と対処法
原因1: プラグインがインストールされていない
もっとも多い原因は、ルールを提供するプラグイン(例: eslint-plugin-react)が依存関係に含まれていないことです。
確認コマンド:
npm ls eslint-plugin-react
解決方法:
プラグインを明示的にインストールします。
npm install -D eslint-plugin-react
または Yarn / pnpm の場合はそれぞれに応じて追加します。
yarn add -D eslint-plugin-react
# または
pnpm add -D eslint-plugin-react
原因2: extends の指定ミス
ESLint 設定で extends にプラグインを含めていない場合、そのルールは自動的に有効化されません。
例:誤った設定
{
"extends": ["eslint:recommended"],
"rules": {
"react/jsx-uses-react": "error"
}
}
正しい設定
{
"extends": ["eslint:recommended", "plugin:react/recommended"],
"plugins": ["react"]
}
plugin:react/recommended を追加することで、React 関連ルールが適切に読み込まれます。
原因3: プラグイン名とルール名の不一致
ルール名の前半(例: react/)は、プラグイン名(eslint-plugin-react)から派生します。
つまり、eslint-plugin-xxx → xxx/ルール名 という対応関係です。
たとえば、次のようなルールがあった場合:
| ルール名 | 必要なプラグイン |
|---|---|
react/jsx-uses-react | eslint-plugin-react |
@typescript-eslint/no-unused-vars | @typescript-eslint/eslint-plugin |
vue/no-unused-components | eslint-plugin-vue |
ルール名とプラグインが一致しているか を確認しましょう。
原因4: プラグインのバージョンが古い/ルールが削除された
ESLint のプラグインは頻繁に更新され、新旧バージョンでルール名が変更または削除されることがあります。
例:
eslint-plugin-reactv7.32 以降では一部の JSX 関連ルールが自動的に無効化@typescript-eslintv6 でルール構成が整理され、一部ルールがdeprecated
確認方法:
npm info eslint-plugin-react version
npm info @typescript-eslint/eslint-plugin version
また、各ルールのドキュメントで「Deprecated」や「Removed」になっていないかも確認しましょう。
原因5: ESLint のバージョンが古く、プラグインのAPIに非対応
新しいプラグインを導入した場合、古い ESLint 本体ではルールの読み込みに失敗することがあります。
ESLint 本体も最新安定版に更新しましょう。
npm install -D eslint@latest
原因6: モノレポや複数 ESLint 設定の衝突
Monorepo 構成(例: Turborepo, Nx, Yarn Workspaces)では、各パッケージで別々の node_modules を参照している場合があります。
ルートにインストールしたプラグインが子パッケージから参照できない場合、ルールが見つからずエラーになります。
解決方法:
- 各サブプロジェクトでも必要なプラグインをインストールする
- または、ルート
.eslintrcにroot: trueを設定し、統一的に管理する
{
"root": true,
"extends": ["plugin:react/recommended"]
}
原因7: VSCode ESLint 拡張のキャッシュ
VSCode の ESLint 拡張が古いキャッシュを保持している場合もあります。
再起動または ESLint サーバーのリロードを試しましょう。
コマンドパレットから実行:
ESLint: Restart ESLint Server
チェックリスト:この順で確認しよう
- プラグインが
devDependenciesに入っているか .eslintrcのplugins/extendsに正しく指定されているか- ルール名が正しいか(スペル・命名一致)
- プラグインと ESLint のバージョンが整合しているか
- モノレポ構成の場合、参照先の
node_modulesが正しいか
まとめ
「Definition for rule ‘xxx’ was not found」エラーは、ESLint とそのプラグインの設定・バージョンの不整合によって発生します。
特に次の3つを押さえれば、ほとんどのケースは解決します。
- 対応プラグインを正しくインストールする
npm install -D eslint-plugin-react .eslintrcで正しいextends/pluginsを指定する{ "extends": ["plugin:react/recommended"], "plugins": ["react"] }- ESLint / プラグインのバージョン整合を確認する
もし原因が不明な場合は、eslint --print-config <file> コマンドで最終的な設定内容を確認すると、どのルールが読み込まれているかを追跡できます。
参考
- ESLint Docs: Configuring Plugins
- ESLint Docs: Configuring Rules
- GitHub: eslint-plugin-react Issues
- @typescript-eslint Docs: Supported Rules


