😵

pnpm + @nuxtjs/composition-api 環境で、依存関係のエラーが出た場合の解決法

2022/03/20に公開

事象

pnpm環境で、 @nuxtjs/composition-api を導入しているnuxtを動かそうとすると、下記のように依存パッケージが足りない旨のエラーが出ます。

ERROR  Cannot find module '@vue/composition-api' from ...

pnpm add @vue/composition-api すれば直るようにも見える内容ですが、
今度は Cannot find module 'defu' ... のように、別の依存パッケージの要求が出てきてキリがない感じになってしまいます。 🤔

解決法

プロジェクトの .npmrc に (無い場合はルートに作成する)、下記の記述を追加することで解決できます。

.npmrc
shamefully-hoist: true

shamefully-hoist は、厳格で無い依存関係でlockファイルが作成されてしまっているような場合でも、巻き上げてimportをしてくれるようなオプションのようです。
https://pnpm.io/npmrc#shamefully-hoist

おそらく @nuxtjs/composition-api のバグ的なものだと思うので、一時的な対応方法ではありますが、いつかこの設定が無くても動くように修正されるかもしれません。

GitHubで編集を提案

Discussion