LEFログ:学習記録ノート

leflog: 学習の記録をどんどんアップしていきます

Next.js バージョンアップ時の Error: Parsing error: DeprecationError: 'originalKeywordKind' の対処法

TL;DR(解決法)

最新の@typescript-eslint/parserを明示的にpackage.jsonに入れてからnpm installする

npm install @typescript-eslint/parser --save-dev
npm install

具体的な経緯

Next.jsのバージョンアップ時に次のようなエラーが出た。

具体的にはnext build時に発生する。

Error: Parsing error: DeprecationError: 'originalKeywordKind' has been deprecated since v5.0.0 and can no longer be used. Use 'identifierToKeywordKind(identifier)' instead.

stack overflowでは次のような記事があった。

しかし、自分のpackage.jsonは下のようになっていて、実際にインストールされている@typescript-eslint/parserをアップデートすることができなかった。

【package.json

"devDependencies": {
    "@playwright/test": "^1.41.2",
    "@types/node": "^20.11.19",
    "@types/react": "^18.2.57",
    "eslint": "^8.56.0",
    "eslint-config-next": "^14.1.0",
    "sass": "^1.71.0",
    "typescript": "^5.3.3"
  }

package-lock.jsonを見てみると古いライブラリのままになっていた。

そのため、npm install @typescript-eslint/parser --save-devを実行して明示的にpackage.jsonに追加した後、npm installをしたら、無事にpackage-lock.jsonも更新されて動くようになった。

【package.json(追加後)】

"devDependencies": {
    "@playwright/test": "^1.41.2",
    "@types/node": "^20.11.19",
    "@types/react": "^18.2.57",
    "@typescript-eslint/parser": "^7.0.2",
    "eslint": "^8.56.0",
    "eslint-config-next": "^14.1.0",
    "sass": "^1.71.0",
    "typescript": "^5.3.3"
  }

これによってTypeScript5.2以降でも使えるようになる。 (package-lock.jsonからtsutilsの依存が消える)

いちばん大事なポイントは、最新のライブラリを明示的にpackage.jsonへと記述すること。

たとえeslinteslint-config-nextが最新の状態でも、それに依存したライブラリが最新のものになるとは限らないので、明示する必要がある。

@typescript-eslint/eslint-pluginが影響している場合もあるので注意。