server & client className не совпадают

Итак, я использую webpack и css-loader с localIndentName для рендеринга моего приложения на стороне сервера с помощью реакции. Я использую модули css для импорта css для отдельных компонентов. Теперь проблема заключается в том, что при импорте стилей в компонент сервер возвращает сопоставленный объект css внутри локального ключа, поэтому сервер не может найти styles.className, а на стороне клиента все работает нормально.

это моя отредактированная конфигурация правил как для сервера, так и для клиента

{
        test: /\.css$/,
        use: [
            {
                loader: 'css-loader',
                options: {
                    modules: true,
                    localIdentName: '[local]__[hash:base64:4],
                    camelCase: true
                }
            }
        ],
}

это сервер-сервер, когда я консоль регистрирую любой импортированный стиль

[ [ 107,
    '',
    '' ],
  toString: [Function],
  i: [Function],
  locals: { 'class-name': 'class-name__3WnY' } ]

Это то, на что жалуется мой клиент

Warning: Prop `className` did not match. Server: "" Client: "class-name__3WnY"

Почему такое поведение?


person Sanjay Bisht    schedule 09.06.2019    source источник


Ответы (1)


Ошибка была вызвана неправильным загрузчиком на стороне сервера.

На стороне сервера мы должны использовать

loader: 'css-loader/locals',

На стороне клиента мы должны использовать

loader: 'css-loader',

Для получения полной конфигурации веб-пакета проверьте этот ответ Я сделал раньше. Надеюсь, это поможет.

person Eric Tan    schedule 14.06.2019