1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

【Next.js】Vercelにデプロイ時のビルドエラー

Posted at

内容

モダン開発を学び始めて半年の駆け出しフロントエンドエンジニア志望の者です。

今回、3ヶ月ほどかけて開発してきたアプリをデプロイしまして、
エラーがちょこちょこ発生したため、解決した手段を記述しておきます。

【1つ目】 Cannot find module エラー

Next.jsでローカルではビルド成功するのに、Vercelで"Type error: Cannot find module"が発生しました。

Type error: Cannot find module '@/components/{コンポーネント名}' or its corresponding type declarations.

原因

原因は、下記2点が考えられました。

  • importパスの大文字小文字が誤っている
  • 過去にファイル名を修正したキャッシュが残っている

importパスに誤りはなかったので、gitのキャッシュが考えられました。

VercelにデプロイするGitHubのリモートリポジトリは、
ファイル名の大文字小文字変更を拾ってくれないみたいです。(設定次第でなんとかなるらしい)

ファイル名の変更が反映されていないままになっているため、エラーになったと考えられました。

解決方法

もっといい方法があるのかもしれませんが、
ファイル名を変更した可能性が高そうな src/pages, src/components の
ディレクトリごと削除、再度pushしました。

※ rm する前に それぞれバックアップは残してください

git rm -r src/pages/
git rm -r src/components/
git push

復元して再push

git add .
git commit -m "復元して再push"
git push

【2つ目】 ReferenceError: localStorage is not defined エラー

localStorage を使用した場合に起こりました。
クライアントサイドで使用する場合は、条件付きで使用しないと怒られちゃうみたいです。
(ブラウザのWebストレージ機能なのだから、そりゃそうか)

解決方法

クライアントサイドであることを確認し、ブラウザ環境でのみ localStorage を操作するように、と修正しました。
これで、サーバーサイドでのエラーを回避できます。

if (typeof window !== 'undefined') {
 const item = localStorage.getItem('key')
}

これで無事デプロイできました!

ビルド時のエラー無視の方法(Typescriptの型エラーとか)も設定次第でできそうですが、
どれくらいの設定なら許容なのだろう。。とりあえず今回はやりませんでした。

次は、作成したアプリについてまとめようと思います!

1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?