Я не буду притворяться, что знаю, что происходит, но я думаю, что next.js где-то регистрирует ошибку.Я немного покопался, и кажется, что в коде сервера есть регистратор ошибок, который будет регистрировать ошибки, если на сервере не установлено свойство quiet
:
https://github.com/zeit/next.js/blob/canary/packages/next-server/server/next-server.ts#L105:
return this.run(req, res, parsedUrl)
.catch((err) => {
this.logError(err)
res.statusCode = 500
res.end('Internal Server Error')
})
Вот sig и body для функции logError:
private logError(...args: any): void {
if (this.quiet) return
// tslint:disable-next-line
console.error(...args)
}
Если вы посмотрите на документацию по использованию следующего API с настраиваемым сервером, то обратите внимание на следующие свойства объекта параметров, которые можно передать конструктору:
Следующий API выглядит следующим образом:
next (opts: object) Поддерживаемые параметры:
dev (bool), запускать лиNext.js в режиме разработки - по умолчанию false
dir (строка), где расположен следующий проект - по умолчанию '.'
quiet (bool) Скрыть сообщения об ошибках, содержащие информацию о сервере - по умолчанию false
conf (объект) тот же объект, который вы будете использовать в next.config.js - по умолчанию {}
При создании следующего объекта попробуйте передать значение quiet как true, чтобы увидеть,t решает вашу проблему:
const express = require('express')
const next = require('next')
const port = parseInt(process.env.PORT, 10) || 3000
const dev = process.env.NODE_ENV !== 'production'
const app = next({ dev, quiet: true })
const handle = app.getRequestHandler()
В документах также упоминается, что ошибки регистрируются в непроизводственных средах (определяется при process.env.NODE_ENV !== 'production'
), поэтому я также хотел бы убедиться, что вы устанавливаете NODE_ENV в «производство»при запуске приложения:
NODE_ENV=production node server.js
Надеюсь, это поможет!