В Next.js , при каких обстоятельствах будет ‘getInitialProps’ в файле _error.js определено ли ‘req’, но ‘err’ не определено?

#next.js

#next.js

Вопрос:

Я в замешательстве из-за ситуации, ведущей к странице _error.

Насколько я понимаю, существует несколько сценариев, ведущих к странице _error.

  1. когда возникает ошибка на стороне клиента, которая приводит к странице _error с определенным ‘err‘ и неопределенным ‘req
  2. при вводе страницы не в маршрутизаторе, что приводит к странице _error с ‘err‘ undefined и ‘req‘ undefined
  3. при возникновении ошибки на стороне сервера, которая приводит к странице _error с определенным ‘err‘ и определенным ‘req

Мой вопрос таков: при каких обстоятельствах на странице _error будет указано ‘err‘ undefined, но не определено ‘req‘?

 Error.getInitialProps = async ({
  pathname,
  asPath,
  query,
  req,
  res,
  err,
}: any) => {
  const statusCode = res ? res.statusCode : err ? err.statusCode : 404
  if (req) {
    if (req.metrics amp;amp; req.logger) {
      req.metrics.emitCounter('error_page', 1)
      req.logger.error(
        `[error page] status code = ${statusCode}  error message = ${err?.message} error stack = ${err?.stack}`
      )
    }
  }
 

Как указано в приведенном выше коде, я получаю следующий журнал:

введите описание изображения здесь

Любая помощь была бы очень признательна. Спасибо

Комментарии:

1. Вы уверены req , что не определено при доступе к странице, не находящейся в Next.js маршрутизатор? Я могу видеть req объект в этом сценарии.

2. определяется ли req определяется тем, возникает ли ошибка на стороне клиента или на стороне сервера, не так ли? Поэтому при доступе к странице, не находящейся в Next.js маршрутизатор, я полагаю, страница 404 не относится к коду на стороне сервера? @juliomalves

3. При вводе пути, который не существует в адресной строке, сервер будет обрабатывать эту ошибку и req будет определен.

4. Вы правы. Спасибо, я в конце концов понимаю, как это работает.