コンパイラかく語りき

import { Fun } from 'programming'

Next.js のビルド時に SyntaxError: Unexpected token < in JSON が出てしまう問題への対処法(package-lock.json が原因の場合)

問題

Next.js でビルドする時に、エラーが発生した。

$ npm run build

> project-name@1.0.0 build
> next build

info  - Loaded env from /Users/me/project-name/.env.local
info  - Linting and checking validity of types  
SyntaxError: Unexpected token < in JSON at position 97
    at JSON.parse (<anonymous>)
    at Object.patchIncorrectLockfile (/Users/chuck/github/shigoto-yametai/node_modules/next/dist/lib/patch-incorrect-lockfile.js:100:33)
(node:81519) [DEP_WEBPACK_MODULE_UPDATE_HASH] DeprecationWarning: Module.updateHash: Use new ChunkGraph API
(Use `node --trace-deprecation ...` to show where the warning was created)
info  - Creating an optimized production build  

これによって Vercel 上ではビルドが中断され、リリースできない状態になってしまった。

ローカルでは問題なくアプリケーションが起動していたけど…。

対処法

エラーをよく見ると、patch-incorrect-lockfile という文言がある。

package-lock.json がおかしい…?

ということで、npm install を実行。すると、package-lock.json に変更が発生した。この状態でビルドをすると、エラーが出なくなった。

環境

この記事執筆時点での筆者の環境↓↓

node: v18.12.1
npm: v8.19.2
Next.js: 13.0.5