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へと記述すること。
たとえeslint
やeslint-config-next
が最新の状態でも、それに依存したライブラリが最新のものになるとは限らないので、明示する必要がある。
@typescript-eslint/eslint-plugin
が影響している場合もあるので注意。