TypeError: Cannot read property '_documentProps' of null
Esto se lanza en el método de renderizado de Head
:
render() {
var {
styles,
ampPath,
inAmpMode,
assetPrefix,
hybridAmp,
canonicalBase,
__NEXT_DATA__,
dangerousAsPath,
headTags
} = this.context._documentProps;
Funciona bien en desarrollo, pero al compilar y ejecutar la versión de compilación se bloquea
Pasos para reproducir el comportamiento, proporcione fragmentos de código o un repositorio:
Entiendo que esto podría estar relacionado con mi configuración. Estoy usando mecanografiado y nextjs.
No arrojó ningún error.
La aplicación funciona bien en 9.0.4 pero tengo una dependencia que está lanzando una advertencia de vulnerabilidad ... y no debería ser una gran actualización (asumí).
El problema siempre se muestra en el primer elemento dentro del Documento en páginas / _document. En este caso es "Head", pero si elimino Head, se muestra en "Main". De alguna manera, este contexto no se llena ... solo cuando se construye (funciona en desarrollo)
Esta es la getInitialProps de mi página _document:
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();
}
}
Es básicamente imposible ayudarlo / decir con qué se relaciona, ya que no se proporciona reproducción.
¿Estás usando Apollo?
Parece haber solucionado esto con una refactorización del código _document.tsx:
const originalRenderPage = context.renderPage;
...
try {
context.renderPage = () =>
originalRenderPage({
enhanceApp: App => props => sheet.collectStyles(<App {...props} />),
});
const initialProps = await BaseDocument.getInitialProps(context);
...
cerca de lo que está en los ejemplos.
Me encontré con otros problemas al actualizar de 9.0.4 a 9.1.4 ... Esta parece ser una actualización no trivial por alguna razón.
Gracias por los consejos de todos modos.
Sé que es difícil ayudar sin un repositorio de reproducción, pero a veces aparecen mensajes emergentes por otras razones y no se muestran en un escenario de hola mundo. La aplicación tiene, por supuesto, otro código que podría enviar cosas no deseadas ... eso ofc siempre es posible. tratando de depurar y proporcionar la mayor cantidad de información posible siempre.
Gracias por toda la ayuda señor. eres impresionante 👍
Enfrenté el mismo problema, no estoy seguro de si esto está relacionado. Pero el problema se debió a una importación incorrecta.
En lugar de import { Head } from 'next/document'
, debería ser import Head from 'next/head'
, si alguien está intentando importar Head
dentro de páginas individuales, y no en _document
, como se indica en los documentos .
@ Shub1427 ¡Eres una belleza, gracias!
@ Shub1427 ❤️
Vaya, esto me salvó después de casi 2 días de estar estancado. Creo que esto definitivamente debería estar mejor documentado.
Para cualquiera que use import Head from 'next/head'
tenga en cuenta que todas las etiquetas parecen estar solo en el cliente, NO en el servidor
Estoy recibiendo este error
Unhandled error during request: TypeError: Cannot destructure property 'assetPrefix' of 'this.context._documentProps' as it is undefined.
en mi _document.js en la implementación pero funciona bien a nivel local.
@sibasishm Me enfrenté a ese error y la solución fue hacer this.context
lugar de this.context._documentProps
.
Para más información → https://github.com/vercel/next.js/discussions/16162
Pero recibo otro error ahora Type error: Property 'files' does not exist on type 'DocumentProps'.
como estoy haciendo const { assetPrefix, files } = this.context
ahora :(
Comentario más útil
Enfrenté el mismo problema, no estoy seguro de si esto está relacionado. Pero el problema se debió a una importación incorrecta.
En lugar de
import { Head } from 'next/document'
, debería serimport Head from 'next/head'
, si alguien está intentando importarHead
dentro de páginas individuales, y no en_document
, como se indica en los documentos .