#next.js #netlify #vercel
Вопрос:
Вот ссылка на мое репозиторий, чтобы продемонстрировать проблему: https://github.com/jonathanwelton/nextjs-custom-error-test
Я пытаюсь использовать пользовательскую страницу _error в Next.js, который работает с локальной производственной сборкой (npm запускает сборку и запуск npm) при посещении /запуске (страница, которая выдает ошибку), но ни Netlify, ни Vercel не уважают его при развертывании приложения. Я просто получаю трассировку стека, которую вы можете увидеть здесь: https://nextjs-custom-error-test.netlify.app/throw
Возвращаясь к Next.js 9.4.4, страница custom _error работает в Vercel, но, похоже, вы не можете развернуть Next.js приложение ниже версии 10 на Netlify.
Я только что обновил приложение для использования следующей версии 11.0.0, но проблема все еще остается.
Кто-нибудь может объяснить, что я делаю не так?
Комментарии:
1. Вы пытались добавить а
pages/500.js
? На Vercel и локально он работает безупречно: nextjs-пользовательский-тест на ошибки-rho.vercel.app/throw Возможно, Netlify не поддерживает эту функцию?
Ответ №1:
Как указано в документации: https://nextjs.org/docs/advanced-features/custom-error-page
Нам нужно передать реквизиты и определить, показывать ли фактическую страницу или страницу с ошибкой.
Измените код следующим образом
export async function getServerSideProps() {
try {
// Your statements
throw new Error('a new error')
return {
props: { data: [] },
}
} catch(e) {
return {
props: { errorCode: 500 },
}
}
}
const Throw = ({ errorCode, ...data }) {
if (errorCode) {
return <Error statusCode={errorCode} />
}
return <div>{...}</div>
}
export default Throw;
Комментарии:
1. эй, @p2pdops, я обновил страницу броска в соответствии с вашими изменениями выше, но у нее все еще та же проблема: nextjs-пользовательский тест на ошибки.netlify.app/бросок Стоит повторить, что старый код работал с Next.js 9.4.4
2. Привет @JonathanWelton, там написано » посетите reactjs.org/docs/… поэтому React пытается отобразить объект.. это значит _error.js отправляется, но есть какой-то передаваемый объект, сделайте заказ