sandbox-memo

開発してて出たエラーをメモる場所

nextjsのプロジェクトをcloudrunに載せるためにdocker化したら謎のエラーが出たのでメモ

github.com

nextjs公式のこちらを参考に、nextjsにdocker用のファイルなり設定を追加して、docker build -t nextjs-docker .からのdocker run -p 3000:3000 nextjs-dockerをした。

で、localhost:3000にアクセスすると、真っ白で、ターミナルに以下のエラーが出た。

TypeError: handler is not a function
    at Server.<anonymous> (/app/server.js:19:11)
    at Server.emit (node:events:513:28)
    at parserOnIncoming (node:_http_server:980:12)
    at HTTPParser.parserOnHeadersComplete (node:_http_common:128:17)

日本語、英語でぐぐっても同様の症状の記事がなかったため、とりあえずプロジェクト内でhanderと記述してる部分をコメントアウトしてみたりしたけど変化なし。

上記リポジトリをcloneしてdocker build -t nextjs-docker .docker run -p 3000:3000 nextjs-dockerをしたらエラーは出なかったので、cloneしたディレクトリに現行プロジェクトのファイルを少しずつコピーしてエラーの原因を特定してみた。

すると、なんと、原因のファイルは/public/favicons/site.webmanifestだった。

{
  "name": "",
  "short_name": "",
  "icons": [
    {
      "src": "/favicons/android-chrome-192x192.png",
      "sizes": "192x192",
      "type": "image/png"
    },
    {
      "src": "/favicons/android-chrome-256x256.png",
      "sizes": "256x256",
      "type": "image/png"
    }
  ],
  "theme_color": "#ffffff",
  "background_color": "#ffffff",
  "display": "standalone"
}

このwebmanifestファイルのnameが空だったために、エラーが出ていた模様。

nextjsもcloudrunも関係ないすごいしょーもないエラーに1.5日も詰まってしまって悔しい。