Next.js: ΠΌΠ΅Ρ€Ρ†Π°ΡŽΡ‰ΠΈΠ΅ стили Π² dev с модулями tailwind + css

Π‘ΠΎΠ·Π΄Π°Π½Π½Ρ‹ΠΉ Π½Π° 3 мая 2020  Β·  13ΠšΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΈ  Β·  Π˜ΡΡ‚ΠΎΡ‡Π½ΠΈΠΊ: vercel/next.js

Π‘ΠΎΠΎΠ±Ρ‰Π΅Π½ΠΈΠ΅ ΠΎΠ± ошибкС

ΠžΠΏΠΈΡˆΠΈΡ‚Π΅ ΠΎΡˆΠΈΠ±ΠΊΡƒ

Π― ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽ tailwindcss с модулями css ΠΈ Π·Π°ΠΌΠ΅Ρ‡Π°ΡŽ, Ρ‡Ρ‚ΠΎ ΠΏΡ€ΠΈ ΠΏΠ΅Ρ€Π²ΠΎΠΉ Π·Π°Π³Ρ€ΡƒΠ·ΠΊΠ΅ страницы всС ΠΌΠΎΠΈ стили Π½Π΅ Π·Π°Π³Ρ€ΡƒΠΆΠ°ΡŽΡ‚ΡΡ. ΠŸΡ‹Ρ‚Π°ΡΡΡŒ ΠΏΠΎΠ½ΡΡ‚ΡŒ, Ρ‡Ρ‚ΠΎ происходит, я запустил ΠΏΡ€ΠΈΠΌΠ΅Ρ€ tailwindcss ΠΈ Π΄ΠΎΠ±Π°Π²ΠΈΠ» ΡΡ‚ΠΈΠ»ΡŒ ΠΈΠ· модуля css, ΠΈ это Ρ‚ΠΎΠΆΠ΅ происходит Ρ‚Π°ΠΌ, Π΄Π°ΠΆΠ΅ ΠΊΠΎΠ³Π΄Π° ΠΎΠ½ построСн для prod.

Π’ΠΎΡΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚ΡŒ

ЗапуститС ΠΏΡ€ΠΈΠΌΠ΅Ρ€ с https://github.com/zeit/next.js/tree/canary/examples/with-tailwindcss

Π”ΠΎΠ±Π°Π²ΡŒΡ‚Π΅ Ρ„Π°ΠΉΠ» index.module.css с Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΌ стилСм

Π΄ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ стили ΠΈΠ· модуля css Π½Π° страницу index.js

ОТидаСмоС повСдСниС

Π‘Π΅Π· использования ΠΌΠΎΠ΄ΡƒΠ»Π΅ΠΉ css всС стили Π·Π°Π³Ρ€ΡƒΠΆΠ°ΡŽΡ‚ΡΡ с ΠΏΠ΅Ρ€Π²ΠΎΠ³ΠΎ Ρ€Π°Π·Π° Π½ΠΎΡ€ΠΌΠ°Π»ΡŒΠ½ΠΎ, Π±Π΅Π· мСрцания. Π’Π°ΠΊΠΎΠ΅ ΠΆΠ΅ ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠ΅ оТидаСтся ΠΏΡ€ΠΈ использовании ΠΌΠΎΠ΄ΡƒΠ»Π΅ΠΉ css

Π‘ΠΊΡ€ΠΈΠ½ΡˆΠΎΡ‚Ρ‹

May-03-2020 14-06-19

БистСмная информация

  • ОБ: macOS
  • Π‘Ρ€Π°ΡƒΠ·Π΅Ρ€ (Ссли Π΅ΡΡ‚ΡŒ) [Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, Ρ…Ρ€ΠΎΠΌ, сафари]
  • ВСрсия Next.js: v9.3.6
  • ВСрсия Node.js: v13.12.0
  • ВСрсия tailwindcss: v1.4.4

Π‘Π°ΠΌΡ‹ΠΉ ΠΏΠΎΠ»Π΅Π·Π½Ρ‹ΠΉ ΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΉ

Π•ΡΡ‚ΡŒ ΠΎΠ±Ρ…ΠΎΠ΄Π½ΠΎΠΉ ΠΏΡƒΡ‚ΡŒ для Ρ€Π΅ΡˆΠ΅Π½ΠΈΡ этой ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡ‹
Π‘ΠΎΠ·Π΄Π°ΠΉΡ‚Π΅ собствСнный " _document.js " ΠΈ Π΄ΠΎΠ±Π°Π²ΡŒΡ‚Π΅ класс " no-fouc " Π² ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ Html.
Π‘ΠΎΠ·Π΄Π°ΠΉΡ‚Π΅ собствСнный " _app.js " ΠΈ Π΄ΠΎΠ±Π°Π²ΡŒΡ‚Π΅ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΉ ΠΊΠΎΠ΄ Π² " componentDidMount "

const removeFouc = (foucElement) => {
      foucElement.className = foucElement.className.replace('no-fouc', 'fouc')
    }
 removeFouc(document.documentElement)

Π”ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ Π΄ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ эти стили Π² Π³Π»ΠΎΠ±Π°Π»ΡŒΠ½Ρ‹Π΅ стили:

.no-fouc {
  visibility: hidden;
 opacity: 0;
}

.fouc {
 visibility: visible;
 opacity: 1;
}

ВсС 13 ΠšΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΉ

Π― ΠΏΠΎΠ΄ΠΎΠ·Ρ€Π΅Π²Π°ΡŽ, Ρ‡Ρ‚ΠΎ это ΠΌΠΎΠΆΠ΅Ρ‚ ΠΈΠΌΠ΅Ρ‚ΡŒ ΠΊΠ°ΠΊΠΎΠ΅-Ρ‚ΠΎ ΠΎΡ‚Π½ΠΎΡˆΠ΅Π½ΠΈΠ΅ ΠΊ автоматичСскому Ρ€Π°Π·Π΄Π΅Π»Π΅Π½ΠΈΡŽ ΠΊΠΎΠ΄Π° ΠΌΠΎΠ΄ΡƒΠ»Π΅ΠΉ css πŸ€”

ВСроятно, связано с https://github.com/zeit/next.js/issues/10268

Π― использовал простыС ΠΌΠΎΠ΄ΡƒΠ»ΠΈ css для ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ΠΎΠ² ΠΈ стилСй, примСняСмых Ρ‡Π΅Ρ€Π΅Π· Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ врСмя.

Π― использовал простыС ΠΌΠΎΠ΄ΡƒΠ»ΠΈ css для ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ΠΎΠ² ΠΈ стилСй, примСняСмых Ρ‡Π΅Ρ€Π΅Π· Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ врСмя.

Богласно https://stackoverflow.com/a/42969608/943337, я просто Π΄ΠΎΠ±Π°Π²ΠΈΠ» пустой Ρ‚Π΅Π³ скрипта, ΠΈ моя ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠ° с Π±ΠΎΠΊΠΎΠ²ΠΎΠΉ панСлью, которая появлялась ΠΏΡ€ΠΈ ΠΏΠ΅Ρ€Π²ΠΎΠΉ Π·Π°Π³Ρ€ΡƒΠ·ΠΊΠ΅, Ρ‚Π΅ΠΏΠ΅Ρ€ΡŒ Ρ€Π΅ΡˆΠ΅Π½Π°.

https://github.com/vercel/next-plugins/issues/455#issuecomment -489452379

import Document, { Html, Head, Main, NextScript } from 'next/document';
import { GA_TRACKING_ID } from '../utils/anayltics';
class MyDocument extends Document {
  static async getInitialProps(ctx) {
    const initialProps = await Document.getInitialProps(ctx);
    return { ...initialProps };
  }

  render() {
    return (
      <Html lang="de">
        <Head>
        </Head>
        <body>
          <Main />
          <NextScript />
          {/* Empty script tag as chrome bug fix, see https://stackoverflow.com/a/42969608/943337 */}
          <script> </script>
        </body>
      </Html>
    );
  }
}

export default MyDocument;

Π― использовал простыС ΠΌΠΎΠ΄ΡƒΠ»ΠΈ css для ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ΠΎΠ² ΠΈ стилСй, примСняСмых Ρ‡Π΅Ρ€Π΅Π· Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ врСмя.

Богласно https://stackoverflow.com/a/42969608/943337, я просто Π΄ΠΎΠ±Π°Π²ΠΈΠ» пустой Ρ‚Π΅Π³ скрипта, ΠΈ моя ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠ° с Π±ΠΎΠΊΠΎΠ²ΠΎΠΉ панСлью, которая появлялась ΠΏΡ€ΠΈ ΠΏΠ΅Ρ€Π²ΠΎΠΉ Π·Π°Π³Ρ€ΡƒΠ·ΠΊΠ΅, Ρ‚Π΅ΠΏΠ΅Ρ€ΡŒ Ρ€Π΅ΡˆΠ΅Π½Π°.

import Document, { Html, Head, Main, NextScript } from 'next/document';
import { GA_TRACKING_ID } from '../utils/anayltics';
class MyDocument extends Document {
  static async getInitialProps(ctx) {
    const initialProps = await Document.getInitialProps(ctx);
    return { ...initialProps };
  }

  render() {
    return (
      <Html lang="de">
        <Head>
        </Head>
        <body>
          <Main />
          <NextScript />
          {/* Empty script tag as chrome bug fix, see https://stackoverflow.com/a/42969608/943337 */}
          <script> </script>
        </body>
      </Html>
    );
  }
}

export default MyDocument;

Бпасибо @ Adrianjs42, боковая панСль пСрСстала ΠΏΠΎΡΠ²Π»ΡΡ‚ΡŒΡΡ Π² Ρ…Ρ€ΠΎΠΌΠ΅.

Π’Π°ΠΊΠΆΠ΅ связанныС
https://github.com/vercel/next.js/issues/13058

Π•ΡΡ‚ΡŒ ΠΎΠ±Ρ…ΠΎΠ΄Π½ΠΎΠΉ ΠΏΡƒΡ‚ΡŒ для Ρ€Π΅ΡˆΠ΅Π½ΠΈΡ этой ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡ‹
Π‘ΠΎΠ·Π΄Π°ΠΉΡ‚Π΅ собствСнный " _document.js " ΠΈ Π΄ΠΎΠ±Π°Π²ΡŒΡ‚Π΅ класс " no-fouc " Π² ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ Html.
Π‘ΠΎΠ·Π΄Π°ΠΉΡ‚Π΅ собствСнный " _app.js " ΠΈ Π΄ΠΎΠ±Π°Π²ΡŒΡ‚Π΅ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΉ ΠΊΠΎΠ΄ Π² " componentDidMount "

const removeFouc = (foucElement) => {
      foucElement.className = foucElement.className.replace('no-fouc', 'fouc')
    }
 removeFouc(document.documentElement)

Π”ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ Π΄ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ эти стили Π² Π³Π»ΠΎΠ±Π°Π»ΡŒΠ½Ρ‹Π΅ стили:

.no-fouc {
  visibility: hidden;
 opacity: 0;
}

.fouc {
 visibility: visible;
 opacity: 1;
}

Π­Ρ‚ΠΎ Π΄ΠΎΠ»ΠΆΠ½ΠΎ Π±Ρ‹Ρ‚ΡŒ исправлСно Π² next@^9.4.5-canary.15 ! ΠŸΠΎΠΆΠ°Π»ΡƒΠΉΡΡ‚Π°, ΠΎΠ±Π½ΠΎΠ²ΠΈΡ‚Π΅ ΠΈ Π΄Π°ΠΉΡ‚Π΅ Π½Π°ΠΌ Π·Π½Π°Ρ‚ΡŒ.

@Timer , я установил next@^9.4.5-canary.18 . Π’Π΅ΠΏΠ΅Ρ€ΡŒ ΠΌΠ΅Ρ€Ρ†Π°Π½ΠΈΠ΅ CSS Π½Π΅ отобраТаСтся Π² Ρ€Π΅ΠΆΠΈΠΌΠ΅ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ , Π½ΠΎ остаСтся Π½Π΅ΠΈΠ·ΠΌΠ΅Π½Π½Ρ‹ΠΌ Π² производствСнной вСрсии. Π’ производствСнной вСрсии всС Π΅Ρ‰Π΅ Π΅ΡΡ‚ΡŒ ошибка.

ΠžΠ±Ρ€Π°Ρ‚ΠΈΡ‚Π΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅, Ρ‡Ρ‚ΠΎ я ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽ ΠΌΠΎΠ΄ΡƒΠ»ΠΈ material-ui + css

Π’ΠΎΡ‚ вСрсия прилоТСния, Π½Π°Π΄ ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΌ я Ρ€Π°Π±ΠΎΡ‚Π°Π», ΡΡ‚ΠΎΠ»ΠΊΠ½ΡƒΠ²ΡˆΠΈΡΡŒ с этой ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠΎΠΉ: https://cluster-11-lwj6nmcgy.vercel.app/ .

@ Prottoy2938 Π—Π΄Π΅ΡΡŒ Ρ‚ΠΎ ΠΆΠ΅ самоС. Π― оставил ΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΉ ΠΊ этой ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠ΅ https://github.com/vercel/next.js/issues/13058#issuecomment -654165987

@Timer , я установил next@^9.4.5-canary.18 . Π’Π΅ΠΏΠ΅Ρ€ΡŒ ΠΌΠ΅Ρ€Ρ†Π°Π½ΠΈΠ΅ CSS Π½Π΅ отобраТаСтся Π² Ρ€Π΅ΠΆΠΈΠΌΠ΅ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ , Π½ΠΎ остаСтся Π½Π΅ΠΈΠ·ΠΌΠ΅Π½Π½Ρ‹ΠΌ Π² производствСнной вСрсии. Π’ производствСнной вСрсии всС Π΅Ρ‰Π΅ Π΅ΡΡ‚ΡŒ ошибка.

ΠžΠ±Ρ€Π°Ρ‚ΠΈΡ‚Π΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅, Ρ‡Ρ‚ΠΎ я ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽ ΠΌΠΎΠ΄ΡƒΠ»ΠΈ material-ui + css

Π’ΠΎΡ‚ вСрсия прилоТСния, Π½Π°Π΄ ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΌ я Ρ€Π°Π±ΠΎΡ‚Π°Π», ΡΡ‚ΠΎΠ»ΠΊΠ½ΡƒΠ²ΡˆΠΈΡΡŒ с этой ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠΎΠΉ: cluster-11-lwj6nmcgy.vercel.app .

ΠšΠ°ΠΆΠ΅Ρ‚ΡΡ, этот ваш случай Π½Π΅ связан с модулями css / ΠΏΠΎΠΏΡƒΡ‚Π½Ρ‹ΠΌ Π²Π΅Ρ‚Ρ€ΠΎΠΌ ΠΈ, Π±ΠΎΠ»Π΅Π΅ Ρ‚ΠΎΠ³ΠΎ, связан с Ρ‚Π΅ΠΌ, Ρ‡Ρ‚ΠΎ Π²Ρ‹ Π·Π°Π±Ρ‹Π»ΠΈ Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΏΡ€Π΅Π΄Π²Π°Ρ€ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹ΠΉ Ρ€Π΅Π½Π΄Π΅Ρ€ΠΈΠ½Π³ material-ui: https://github.com/vercel/next.js/issues/7322#issuecomment -653858948

@casperle , Π’ ΠΌΠΎΠ΅ΠΌ случаС ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠ° Π±Ρ‹Π»Π° Π² Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ я Π΄Π΅Π»Π°Π» Ρ€Π΅Π½Π΄Π΅Ρ€ΠΈΠ½Π³ Π½Π° сторонС сСрвСра . Π― слСдил Π·Π° этой Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π°Ρ†ΠΈΠ΅ΠΉ ΠΈΠ· material-ui ΠΈ исправил ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡƒ

Π‘ v9.4.5-canary.28 Π½Π΅ ΠΌΠ΅Ρ€Ρ†Π°Π΅Ρ‚ Π² dev ΠΈ Π½Π΅ ΠΌΠ΅Ρ€Ρ†Π°Π΅Ρ‚ Π² production.

Π‘Ρ‹Π»Π° Π»ΠΈ эта страница ΠΏΠΎΠ»Π΅Π·Π½ΠΎΠΉ?
0 / 5 - 0 Ρ€Π΅ΠΉΡ‚ΠΈΠ½Π³ΠΈ