TypeError: Cannot read property '_documentProps' of null
يتم طرح هذا في طريقة العرض Head
:
render() {
var {
styles,
ampPath,
inAmpMode,
assetPrefix,
hybridAmp,
canonicalBase,
__NEXT_DATA__,
dangerousAsPath,
headTags
} = this.context._documentProps;
يعمل بشكل جيد في التطوير ولكن عند إنشاء إصدار الإصدار وتشغيله يتعطل
خطوات إعادة إنتاج السلوك ، يرجى توفير مقتطفات التعليمات البرمجية أو المستودع:
أتفهم أن هذا قد يكون شيئًا متعلقًا بإعداداتي. أنا أستخدم الكتابة المطبوعة و nextjs.
لم يتم إلقاء أي خطأ.
يعمل التطبيق بشكل جيد في 9.0.4 ولكن لدي تبعية تلقي تحذيرًا من الضعف .. ولا ينبغي أن يكون تحديثًا كبيرًا (افترضت).
تظهر المشكلة دائمًا في العنصر الأول داخل المستند في pages / _document. في هذه الحالة "رأسه" ولكن إذا قمت بإزالة "الرأس" فإنه يظهر نفسه في "الرئيسي". بطريقة ما هذا السياق لا يتم ملؤه بالسكان .. فقط عند البناء (يعمل في التطوير)
هذه هي getInitialProps لصفحة _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();
}
}
من المستحيل بشكل أساسي مساعدتك / قول ما يتعلق به حيث لا يتم توفير إعادة إنتاج.
هل تستخدم أبولو؟
يبدو أنه تم إصلاح هذا الأمر مع بعض المُعاد بناء على كود _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 أنت جميلة ، شكرا!
@ shub1427 ❤️
واو ، لقد أنقذني هذا بعد ما يقرب من يومين من التعثر. أعتقد أن هذا يجب بالتأكيد توثيقه بشكل أفضل.
بالنسبة لأي شخص يستخدم 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
الآن :(
التعليق الأكثر فائدة
لقد واجهت نفس المشكلة ، ولست متأكدًا مما إذا كان ذلك مرتبطًا. ولكن ، كانت المشكلة بسبب الاستيراد غير السليم.
بدلاً من
import { Head } from 'next/document'
، يجب أن يكونimport Head from 'next/head'
، إذا كان أي شخص يحاول استيرادHead
داخل الصفحات الفردية ، وليس في_document
، كما هو مذكور في المستندات .