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