Next.js: рд▓реЗрдЦрди рддреНрд░реБрдЯрд┐: рдирд▓ рдХреА рд╕рдВрдкрддреНрддрд┐ '_documentProps' рдирд╣реАрдВ рдкрдврд╝ рд╕рдХрддрд╛

рдХреЛ рдирд┐рд░реНрдорд┐рдд 6 рджрд┐рд╕ре░ 2019  ┬╖  10рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ  ┬╖  рд╕реНрд░реЛрдд: vercel/next.js

рдмрдЧ рд░рд┐рдкреЛрд░реНрдЯ

рдмрдЧ рдХрд╛ рд╡рд░реНрдгрди рдХрд░реЗрдВ

TypeError: Cannot read property '_documentProps' of null

рдЗрд╕реЗ Head рдХреА рд░реЗрдВрдбрд░ рд╡рд┐рдзрд┐ рдореЗрдВ рдлреЗрдВрдХ рджрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ:

render() {
    var {
      styles,
      ampPath,
      inAmpMode,
      assetPrefix,
      hybridAmp,
      canonicalBase,
      __NEXT_DATA__,
      dangerousAsPath,
      headTags
    } = this.context._documentProps;

рд╡рд┐рдХрд╛рд╕ рдореЗрдВ рдареАрдХ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ рд▓реЗрдХрд┐рди рдмрд┐рд▓реНрдб рд╕рдВрд╕реНрдХрд░рдг рдХреЛ рдмрдирд╛рддреЗ рдФрд░ рдЪрд▓рд╛рддреЗ рд╕рдордп рдпрд╣ рдХреНрд░реИрд╢ рд╣реЛ рдЬрд╛рддрд╛ рд╣реИ

рдкреНрд░рдЬрдирди рдХрд░рдирд╛

рд╡реНрдпрд╡рд╣рд╛рд░ рдХреЛ рдкреБрди: рдкреЗрд╢ рдХрд░рдиреЗ рдХреЗ рдЪрд░рдг, рдХреГрдкрдпрд╛ рдХреЛрдб рд╕реНрдирд┐рдкреЗрдЯ рдпрд╛ рдПрдХ рд╕рдВрдЧреНрд░рд╣ рдкреНрд░рджрд╛рди рдХрд░реЗрдВ:

рдореИрдВ рд╕рдордЭрддрд╛ рд╣реВрдВ рдХрд┐ рдпрд╣ рдореЗрд░реЗ рд╕реЗрдЯрдЕрдк рд╕реЗ рд╕рдВрдмрдВрдзрд┐рдд рдХреБрдЫ рд╣реЛ рд╕рдХрддрд╛ рд╣реИред рдореИрдВ рдЯрд╛рдЗрдкрд╕реНрдХреНрд░рд┐рдкреНрдЯ рдФрд░ рдиреЗрдХреНрд╕реНрдЯрдЬ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд░рд╣рд╛ рд╣реВрдВред

рдЕрдкреЗрдХреНрд╖рд┐рддреН рд╡реНрдпрд╡рд╣рд╛рд░

рдХреЛрдИ рддреНрд░реБрдЯрд┐ рдирд╣реАрдВ рдлреЗрдВрдХреА рдЧрдИред

рд╡реНрдпрд╡рд╕реНрдерд╛ рдЬрд╛рдирдХрд╛рд░реА

  • рдУрдПрд╕: рдореИрдХрдУрдПрд╕
  • рдмреНрд░рд╛рдЙрдЬрд╝рд░ (рдпрджрд┐ рд▓рд╛рдЧреВ рд╣реЛ) рдХреНрд░реЛрдо (рдХреЛрдИ рднреА)
  • Next.js рдХрд╛ рд╕рдВрд╕реНрдХрд░рдг: 9.1.4

рдЕрддрд┐рд░рд┐рдХреНрдд рд╕рдВрджрд░реНрдн

рдРрдк 9.0.4 рдореЗрдВ рдареАрдХ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ рд▓реЗрдХрд┐рди рдореЗрд░реЗ рдкрд╛рд╕ рдПрдХ рдирд┐рд░реНрднрд░рддрд╛ рд╣реИ рдЬреЛ рдПрдХ рднреЗрджреНрдпрддрд╛ рдЪреЗрддрд╛рд╡рдиреА рдлреЗрдВрдХ рд░рд╣реА рд╣реИ..рдФрд░ рдПрдХ рдмрдбрд╝рд╛ рдЕрдкрдбреЗрдЯ рдирд╣реАрдВ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП (рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ)ред

рд╕рдорд╕реНрдпрд╛ рд╣рдореЗрд╢рд╛ рджрд╕реНрддрд╛рд╡реЗрдЬрд╝ рдХреЗ рдЕрдВрджрд░ рдкрд╣рд▓реЗ рддрддреНрд╡ рдореЗрдВ рдкреГрд╖реНрдареЛрдВ/_рджрд╕реНрддрд╛рд╡реЗрдЬрд╝ рдореЗрдВ рджрд┐рдЦрд╛рдИ рджреЗрддреА рд╣реИред рдЗрд╕ рдорд╛рдорд▓реЗ рдореЗрдВ рдЗрд╕рдХрд╛ "рд╣реЗрдб" рд╣реИ рд▓реЗрдХрд┐рди рдЕрдЧрд░ рдореИрдВ рд╣реЗрдб рд╣рдЯрд╛ рджреЗрддрд╛ рд╣реВрдВ рддреЛ рдпрд╣ рдЦреБрдж рдХреЛ "рдореЗрди" рдореЗрдВ рджрд┐рдЦрд╛рддрд╛ рд╣реИред рдХрд┐рд╕реА рддрд░рд╣ рдпрд╣ рдкреНрд░рд╕рдВрдЧ рдЖрдмрд╛рдж рдирд╣реАрдВ рд╣реЛ рд░рд╣рд╛ рд╣реИ..рдХреЗрд╡рд▓ рдирд┐рд░реНрдорд╛рдг рдХрд░рддреЗ рд╕рдордп (рд╡рд┐рдХрд╛рд╕ рдореЗрдВ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ)

рдпрд╣ рдореЗрд░реЗ _document рдкреГрд╖реНрда рдХрд╛ getInitialProps рд╣реИ:

public static async getInitialProps(context: CustomDocumentContext) {
    const sheet = new ServerStyleSheet();
    const renderPage = context.renderPage;

    try {
      context.renderPage = () => {
        const enhancer = App => props => {
          return sheet.collectStyles(<App {...props} />);
        };

        return renderPage(enhancer);
      };

      const initialProps: any = await BaseDocument.getInitialProps(context);
      const { language, locale, localeData } = context.req;

      return {
        ...initialProps,
        language,
        locale,
        localeData,
        styles: (
          <>
            {initialProps.styles}
            {sheet.getStyleElement()}
          </>
        ),
      };
    } finally {
      // @ts-ignore
      sheet.seal();
    }
  }
please add a complete reproduction

рд╕рдмрд╕реЗ рдЙрдкрдпреЛрдЧреА рдЯрд┐рдкреНрдкрдгреА

рдореБрдЭреЗ рдПрдХ рд╣реА рд╕рдорд╕реНрдпрд╛ рдХрд╛ рд╕рд╛рдордирд╛ рдХрд░рдирд╛ рдкрдбрд╝рд╛, рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдирд╣реАрдВ рд╣реИ рдХрд┐ рдпрд╣ рд╕рдВрдмрдВрдзрд┐рдд рд╣реИ рдпрд╛ рдирд╣реАрдВред рд▓реЗрдХрд┐рди, рдЕрдиреБрдЪрд┐рдд рдЖрдпрд╛рдд рдХреЗ рдХрд╛рд░рдг рд╕рдорд╕реНрдпрд╛ рдЙрддреНрдкрдиреНрди рд╣реБрдИ рдереАред

import { Head } from 'next/document' рдмрдЬрд╛рдп, рдпрд╣ import Head from 'next/head' рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП, рдпрджрд┐ рдХреЛрдИ рд╡реНрдпрдХреНрддрд┐рдЧрдд рдкреГрд╖реНрдареЛрдВ рдХреЗ рдЕрдВрджрд░ Head рдЖрдпрд╛рдд рдХрд░рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░ рд░рд╣рд╛ рд╣реИ, рди рдХрд┐ _document , рдЬреИрд╕рд╛ рдХрд┐ рдбреЙрдХреНрд╕ рдореЗрдВ рдмрддрд╛рдпрд╛ рдЧрдпрд╛ рд╣реИред

рд╕рднреА 10 рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

рдпрд╣ рдореВрд▓ рд░реВрдк рд╕реЗ рдЖрдкрдХреА рдорджрдж рдХрд░рдирд╛/рдХрд╣рдирд╛ рдЕрд╕рдВрднрд╡ рд╣реИ рдХрд┐ рдпрд╣ рдХрд┐рд╕рд╕реЗ рд╕рдВрдмрдВрдзрд┐рдд рд╣реИ рдХреНрдпреЛрдВрдХрд┐ рдХреЛрдИ рдкреНрд░рдЬрдирди рдкреНрд░рджрд╛рди рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред

рдХреНрдпрд╛ рдЖрдк рдЕрдкреЛрд▓реЛ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд░рд╣реЗ рд╣реИрдВ?

рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдЗрд╕реЗ _document.tsx рдХреЛрдб рдореЗрдВ рдХреБрдЫ рд░рд┐рдлреИрдХреНрдЯрд░ рдХреЗ рд╕рд╛рде рддрдп рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ:

const originalRenderPage = context.renderPage;
...
    try {
      context.renderPage = () =>
        originalRenderPage({
          enhanceApp: App => props => sheet.collectStyles(<App {...props} />),
        });

      const initialProps = await BaseDocument.getInitialProps(context);
...

рдЙрджрд╛рд╣рд░рдгреЛрдВ рдореЗрдВ рдХреНрдпрд╛ рд╣реИ рдХреЗ рдХрд░реАрдмред

9.0.4 рд╕реЗ 9.1.4 рддрдХ рдЕрджреНрдпрддрди рд╣реЛрдиреЗ рдХреЗ рдмрд╛рд╡рдЬреВрдж рдЕрдиреНрдп рдореБрджреНрджреЛрдВ рдореЗрдВ рдЪрд▓ рд░рд╣рд╛ рд╣реИ..рдпрд╣ рдХрд┐рд╕реА рдХрд╛рд░рдг рд╕реЗ рдПрдХ рдЧреИрд░-рддреБрдЪреНрдЫ рдЕрджреНрдпрддрди рдкреНрд░рддреАрдд рд╣реЛрддрд╛ рд╣реИред

рд╡реИрд╕реЗ рднреА рд╕рдВрдХреЗрдд рдХреЗ рд▓рд┐рдП рдзрдиреНрдпрд╡рд╛рджред

рдореБрдЭреЗ рдкрддрд╛ рд╣реИ рдХрд┐ рдХреБрдЫ рдкреНрд░рдЬрдирди рд░реЗрдкреЛ рдХреЗ рдмрд┐рдирд╛ рдорджрдж рдХрд░рдирд╛ рдореБрд╢реНрдХрд┐рд▓ рд╣реИ рд▓реЗрдХрд┐рди рдХрднреА-рдХрднреА рдЕрдиреНрдп рдХрд╛рд░рдгреЛрдВ рд╕реЗ рдкреЙрдкрдЕрдк рдЬрд╛рд░реА рдХрд░рддрд╛ рд╣реИ рдФрд░ рдЦреБрдж рдХреЛ рд╣реИрд▓реЛ рд╡рд░реНрд▓реНрдб рдкрд░рд┐рджреГрд╢реНрдп рдореЗрдВ рдирд╣реАрдВ рджрд┐рдЦрд╛рддрд╛ рд╣реИред рдРрдк рдореЗрдВ рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ рдЕрдиреНрдп рдХреЛрдб рд╣реИ рдЬреЛ рдЕрд╡рд╛рдВрдЫрд┐рдд рдЪреАрдЬреЛрдВ рдХреЛ рднреЗрдЬ рд╕рдХрддрд╛ рд╣реИ..рд╡рд╣ рд╣рдореЗрд╢рд╛ рд╕рдВрднрд╡ рд╣реИред рдбреАрдмрдЧ рдХрд░рдиреЗ рдФрд░ рд╣рдореЗрд╢рд╛ рдпрдерд╛рд╕рдВрднрд╡ рдЕрдзрд┐рдХ рд╕реЗ рдЕрдзрд┐рдХ рдЬрд╛рдирдХрд╛рд░реА рдкреНрд░рджрд╛рди рдХрд░рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░рдирд╛ред

рд╕рднреА рдорджрдж рдХреЗ рд▓рд┐рдП рдзрдиреНрдпрд╡рд╛рдж рд╕рд░ред рддреБрдо рдХрдорд╛рд▓ рд╣реЛ

рдореБрдЭреЗ рдПрдХ рд╣реА рд╕рдорд╕реНрдпрд╛ рдХрд╛ рд╕рд╛рдордирд╛ рдХрд░рдирд╛ рдкрдбрд╝рд╛, рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдирд╣реАрдВ рд╣реИ рдХрд┐ рдпрд╣ рд╕рдВрдмрдВрдзрд┐рдд рд╣реИ рдпрд╛ рдирд╣реАрдВред рд▓реЗрдХрд┐рди, рдЕрдиреБрдЪрд┐рдд рдЖрдпрд╛рдд рдХреЗ рдХрд╛рд░рдг рд╕рдорд╕реНрдпрд╛ рдЙрддреНрдкрдиреНрди рд╣реБрдИ рдереАред

import { Head } from 'next/document' рдмрдЬрд╛рдп, рдпрд╣ import Head from 'next/head' рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП, рдпрджрд┐ рдХреЛрдИ рд╡реНрдпрдХреНрддрд┐рдЧрдд рдкреГрд╖реНрдареЛрдВ рдХреЗ рдЕрдВрджрд░ Head рдЖрдпрд╛рдд рдХрд░рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░ рд░рд╣рд╛ рд╣реИ, рди рдХрд┐ _document , рдЬреИрд╕рд╛ рдХрд┐ рдбреЙрдХреНрд╕ рдореЗрдВ рдмрддрд╛рдпрд╛ рдЧрдпрд╛ рд╣реИред

@Shub1427 рдЖрдк рд╕реБрдВрджрд░ рд╣реИрдВ, рдзрдиреНрдпрд╡рд╛рдж!

@рд╢реБрдм1427 тЭдя╕П

рд╡рд╛рд╣, рдЗрд╕рдиреЗ рдореБрдЭреЗ рд▓рдЧрднрдЧ 2 рджрд┐рдиреЛрдВ рддрдХ рдЕрдЯрдХреЗ рд░рд╣рдиреЗ рдХреЗ рдмрд╛рдж рдмрдЪрд╛ рд▓рд┐рдпрд╛ред рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдпрд╣ рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ рдмреЗрд╣рддрд░ рджрд╕реНрддрд╛рд╡реЗрдЬ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдПред

import Head from 'next/head' рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рд╡рд╛рд▓реЗ рдХрд┐рд╕реА рднреА рд╡реНрдпрдХреНрддрд┐ рдХреЗ рд▓рд┐рдП рдзреНрдпрд╛рди рджреЗрдВ рдХрд┐ рд╕рднреА рдЯреИрдЧ рдХреЗрд╡рд▓ рдХреНрд▓рд╛рдЗрдВрдЯ рдореЗрдВ рдкреНрд░рд╕реНрддреБрдд рдХрд┐рдП рдЬрд╛рддреЗ рд╣реИрдВ, рд╕рд░реНрд╡рд░ рдирд╣реАрдВ

рдореБрдЭреЗ рдпрд╣ рддреНрд░реБрдЯрд┐ рдорд┐рд▓ рд░рд╣реА рд╣реИ
Unhandled error during request: TypeError: Cannot destructure property 'assetPrefix' of 'this.context._documentProps' as it is undefined.
рдореЗрд░реЗ _document.js рдореЗрдВ рдкрд░рд┐рдирд┐рдпреЛрдЬрди рдкрд░ рд▓реЗрдХрд┐рди рдпрд╣ рд╕реНрдерд╛рдиреАрдп рд░реВрдк рд╕реЗ рдареАрдХ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИред

@sibasishm рдореБрдЭреЗ рдЙрд╕ рддреНрд░реБрдЯрд┐ рдХрд╛ рд╕рд╛рдордирд╛ рдХрд░рдирд╛ рдкрдбрд╝рд╛ рдФрд░ рд╕рдорд╛рдзрд╛рди this.context рдмрдЬрд╛рдп this.context._documentProps ред

рдЕрдзрд┐рдХ рдЬрд╛рдирдХрд╛рд░реА рдХреЗ рд▓рд┐рдП тЖТ https://github.com/vercel/next.js/discussions/16162

рд▓реЗрдХрд┐рди рдЕрдм рдореИрдВ рдПрдХ рдФрд░ рддреНрд░реБрдЯрд┐ рд╣реЛ рд░рд╣реА рд╣реИ Type error: Property 'files' does not exist on type 'DocumentProps'. рдХреЗ рд░реВрдк рдореЗрдВ рдореИрдВ рдХрд░ рд░рд╣рд╛ рд╣реВрдБ const { assetPrefix, files } = this.context рдЕрдм :(

рдХреНрдпрд╛ рдпрд╣ рдкреГрд╖реНрда рдЙрдкрдпреЛрдЧреА рдерд╛?
0 / 5 - 0 рд░реЗрдЯрд┐рдВрдЧреНрд╕

рд╕рдВрдмрдВрдзрд┐рдд рдореБрджреНрджреЛрдВ

kenji4569 picture kenji4569  ┬╖  3рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

formula349 picture formula349  ┬╖  3рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

sospedra picture sospedra  ┬╖  3рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

swrdfish picture swrdfish  ┬╖  3рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

olifante picture olifante  ┬╖  3рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ