NuxtでisNuxtMajorVersionのエラーが出たらnode_modulesなどを削除して直す

isNuxtMajorVersionのエラーが出ることがある

pnpm dev (nuxt dev)を実行したときに、isNuxtMajorVersionのエラーが出ることがあります。

[@nuxt/telemetry 12:00:00]  ERROR  Error while running event: (0 , _kit.isNuxtMajorVersion) is not a function

    at getNuxtMajorVersion (node_modules/@nuxt/telemetry/dist/module.mjs:37:37)
    at createContext (node_modules/@nuxt/telemetry/dist/module.mjs:51:28)

開発サーバー自体は一応起動するものの、大量のエラーログが吐き出され続けるので気になってしまう人も多いはずです。

エラーの原因は依存パッケージのバージョン不整合

このエラーの直接の原因は @nuxt/telemetry です。

@nuxt/telemetryはある時点のリリースから、Nuxtのメジャーバージョンを判定する処理を非推奨となったisNuxt3の代わりに@nuxt/kitが提供するisNuxtMajorVersionという関数を使うように変更しました。

これはNuxt v4への互換性対応の一環です。

  • @nuxt/telemetryは新しいバージョンで、isNuxtMajorVersionを要求している
  • @nuxt/kitにはその関数がまだ存在しない(古いバージョンのまま)

(0 , _kit.isNuxtMajorVersion) is not a function というメッセージも、まさに「@nuxt/kit からインポートしたはずのisNuxtMajorVersionが関数として存在しない」ことを示しています。

isNuxtMajorVersionのエラーの対処方法

原因が「壊れた依存ツリー」であることが多いため、以下の手順でいったん全部消してから入れ直すのが一番確実です。

1. node_modulesとロックファイルを削除する

rm -rf node_modules package-lock.json pnpm-lock.yaml 

2. Nuxtのキャッシュも削除する

rm -rf .nuxt

3. 依存関係を再インストールする

pnpm install
# または npm install

以上の手順の完了後に再度起動すれば、isNuxtMajorVersionのエラーが表示されなくなります。

カテゴリーNuxt