ハンバーガーメニュー

Menu

VSCodeのPrettierで自動フォーマットがいきなり効かなくなったんだけど...

1ヶ月ほど前から唐突にVSCodeの自動フォーマット(editor.formatOnSave)の機能が効かずに困っていたんですが、解決したので備忘録として載せておきます。

忙しい人のための結論

以下のどちらかを試してみてください(どちらかで大丈夫です)

  1. settings.jsonのeditor.prettierPathを削除する
  2. VSCodeの拡張機能であるPrettierのバージョンを9.14.0以下に落とす

どうやら9.15.0の変更から今回のバグが発生していた様です。
prettier@9.14.0の画像

環境

マシン: MacBook Air (M1, 2020)
OS: MacOS Monterey 12.6.3
VSCode:1.80.1

状況

  • 6月の途中ごろからいきなりフォーマットが効かなくなった
  • npm run formatは使える
  • 画面の右下のPrettierがずっと赤く表示されている
    prettierのエラー画像
  • エラー出力としては以下の様に出ている
["ERROR" - 16:04:37] Failed to load module. If you have prettier or plugins referenced in package.json, ensure you have run `npm install`
["ERROR" - 16:04:37] Cannot find Prettier package.json

試してみたこと

  1. 以下の記事を参考にprettierをグローバルインストールし直す

https://qiita.com/hppRC/items/6670d91b1209f0c576ea

  1. 拡張機能の再インストール
  2. node_modulesを消してnpm install
  3. VSCodeの更新、再起動

解決方法

繰り返しになりますがVSCodeの拡張機能であるPrettierを9.14.0以下に落とすと直りました。9.15.0のリリース時期と僕が自動フォーマットが使えなくなった時期が一致しているので納得です。

やり方としては

  1. 拡張機能のPrettierのページで、「アンインストール」の横の矢印をクリックして、「別のバージョンをインストール」
    Prettierの修正1の画像
  2. 選択肢の中から9.14.0以下の好きなバージョンを選ぶ
    Prettierの修正2の画像
  3. 再読み込みして修正されていることを確認

で完了です。

正直ただバージョンを戻しているだけなので付け焼き刃感が否めないんですが、調べた限りでも根本的な解決方法などはありませんでした。
以下が調べた記事一覧です。

https://github.com/prettier/prettier-vscode/issues/3036
https://github.com/prettier/prettier-vscode/issues/3037
↓これを見ると9.19.0がリリースされる前にprettierPathに関するコミットがrevertされているので直感的には9.19.0で直っている様な気がするんですが、なぜかダメでしたね...
https://github.com/prettier/prettier-vscode/pull/3042
https://github.com/prettier/prettier-vscode/issues/3071

分からなかったこと

先程のこちらのPRに関してなんですが、prettierPathを修正しているだけなんですよね。
https://github.com/prettier/prettier-vscode/pull/3042

なんですが、9.14.0以下の環境でprettierPathを適当に設定しても動きます。
なんでなんでしょうか...

追記

どうやらprettierPathを削除しても解決する様です。
prettierPathに関する参照でエラーが発生していた様なので、それを削除してしまえばエラーも発生しないという論理です。
これなら最新バージョンでも問題なく動作しますね!

周りに同様のエラーを出ている人がいなかったのはそもそもprettierPathが設定されていなかったからの様ですね。
僕はprettierのonSaveが機能していなかった時にprettierPathを設定したのでそれが原因でこうなっていたみたいです。

終わりに

結論はめちゃくちゃシンプルだったんですが1ヶ月以上も苦しんでしまいました。
今まで拡張機能のエラーに遭遇したことがなかったので「PATHが通っていないんじゃないか」とか「nodeの管理をvoltaにしたことで不具合が発生したんじゃないか」とかを考えてしまって関係ないところを模索し続けてしまいました...
あと拡張機能のエラーはググるよりもリポジトリのissueやPRで検索した方が早いかもしれないですね。

やっとストレスフリーに開発ができます。
嬉しい!

やたのアイコン画像

YUKI YATA

githubのアイコン画像xのアイコン画像zennのアイコン画像

株式会社LayerX
フロントエンドエンジニアを目指しています。
Vue / React / Go / TypeScript

  • 著者名の画像

    著者名

    やた

  • 公開日の画像

    公開日

    2023/07/25

  • 更新日の画像

    更新日

    2024/02/15

  • 文字数の画像

    文字数

    約2702字

  • カテゴリの画像

    カテゴリ

    その他