Prettier 3.0.0でのeslint実行エラー: prettier.resolveConfig.sync is not a function
エラーの発生条件
ESLint実行時に以下のエラーが発生するケース:
bash
npx eslint "src"
TypeError: prettier.resolveConfig.sync is not a function
Occurred while linting src/index.js
Rule: "prettier/prettier"
at /project/node_modules/eslint-plugin-prettier/eslint-plugin-prettier.js:138:40
エラーの原因分析
このエラーはPrettier 3.0以上を使用する環境で、互換性のないeslint-plugin-prettier
のバージョン(v4.x)を利用している場合に発生します。根本的な原因は:
- APIの非互換性変更: Prettier 3.0で
resolveConfig.sync
メソッドが削除され、代替API(resolveConfig
)が導入された - モジュール間バージョン不一致:json
"prettier": "3.0.0", // v3系 "eslint-plugin-prettier": "^4.2.1" // v4系 ← 互換性なし
- 依存関係の暗黙的破壊: Prettierを更新したのにプラグインを更新し忘れた場合に発生
解決策1:eslint-plugin-prettierのバージョンアップ(推奨)
最も確実な解決法はeslint-plugin-prettier
をv5以上に更新することです。
bash
# npm の場合
npm install --save-dev eslint-plugin-prettier@5
# yarn の場合
yarn add -D eslint-plugin-prettier@5
バージョン確認ポイント
package.json
が以下のように更新されていることを確認:
json
{
"devDependencies": {
"eslint": "^8.42.0",
"eslint-config-prettier": "^8.8.0",
"prettier": "3.0.0",
"eslint-plugin-prettier": "^5.0.0" // v5以上に更新
}
}
解決策2:Prettierのダウングレード(既存プロジェクト用)
プロジェクトの事情でPrettier 3.xへの移行が難しい場合の代替案:
bash
# Prettierを2.x系に固定
npm install prettier@2.8.8
# eslint-plugin-prettierはv4.xを維持
npm install eslint-plugin-prettier@4
json
{
"devDependencies": {
"prettier": "2.8.8", // 2.x系に固定
"eslint-plugin-prettier": "^4.2.1" // v4系を維持
}
}
ダウングレードの注意点
- Prettier 3.xの新機能が利用できない
- 長期的にはv5への移行が推奨
その他の確認事項
Prettier本体がインストールされているか確認
稀ですが、Prettier自体がインストールされていないケースがあります(エラー内容に反して実際に存在しない場合)。
bash
# インストール確認
npm list prettier
# 存在しない場合のインストール
npm install --save-dev prettier
関連ツールの互換性対応
pretty-quick
などPrettier 3.xに対応していないツールを使っている場合:
bash
# 非互換ツールの削除
npm uninstall pretty-quick
# lint-stagedの導入
npm install --save-dev lint-staged
js
module.exports = {
'*.{js,ts}': ['eslint --fix', 'prettier --write']
}
問題解決の流れ図解
根本原因と予防策
このエラーはsemantic versioningにおけるメジャーバージョンアップの本質を示す好例です:
- メジャーバージョン変更(v2→v3) = 後方互換性のない変更
- 依存パッケージの連鎖更新: メインライブラリ更新時は関連プラグインの更新を必須
- 予防策:bash
# メジャーアップデート時は個別にバージョン指定 npm install prettier@latest --exact # 関連プラグインのリリースノート確認 npx npm-check-updates -u
::: success 最終確認ポイント
- CI環境では
package-lock.json
やyarn.lock
を必ずコミット - Docker環境ではビルドキャッシュをクリアして再インストール :::
以上の対策でエラーは解決します。プロジェクトの状況に応じて適切なアプローチを選択してください。