44
17

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 3 years have passed since last update.

Next.jsでclassNameが見つからなくなるバグの対処方

Last updated at Posted at 2020-01-09

はじめに

Next.js + styled-component でホットリロードあり(npm run dev)で開発を行っているとスタイルを修正した際に下記のエラーが発生した。

index.js:1 Warning: Prop `className` did not match. Server: "文字列" Client: "文字列"

原因

スタイルを修正した際にローカルサーバー側では新しいCSSが作られるが(この時点でclass名が変わってしまう)、
クライアント側のHTMLが指定しているclassは変更前にビルドされた物なのでclass名が異なってしまいエラーが発生する。

解決方法

Ref: https://github.com/zeit/next.js/issues/7423

プロジェクトのrootディレクトリに .babelrc を作成し下記を記述したら解決した。
(すでに.babelrcが存在する場合は下記の内容を追記)

{
  "presets": ["next/babel"],
  "plugins": [
    [
      "styled-components",
      { "ssr": true, "displayName": true, "preprocess": false }
    ]
  ]
}

最後に

間違いや動かない等があれば、コメントください。

44
17
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
44
17

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?