Я использую клиентский экспресс-сервер с Next.js. Он работает внутри контейнера. Я делаю http-запрос с isomorphic-fetch
для получения данных для моего рендеринга. Я бы хотел сделать localhost
при работе на сервере и mysite.com
при работе на клиенте. Не уверен, что лучший способ это сделать. Я могу сделать это взломанно, выполнив const isServer = typeof window === 'undefined'
но это выглядит довольно плохо.
Как определить, что я на сервере и клиенте в Next.js
Ответ 1
Вы можете использовать process.browser
для различения серверной среды (NodeJS) и среды клиента (браузера).
process.browser
является true
на клиенте и undefined
на сервере.
Ответ 2
Еще одно замечание заключается в том, что componentDidMount()
всегда вызывается в браузере. Я часто загружаю начальный набор данных (seo content в getInitialProps()
, затем загружаю больше данных глубины в метод componentDidMount()
.
Ответ 3
Так как мне не нравится зависеть от странных сторонних вещей для этого поведения (хотя process.browser
, кажется, прибывает из Webpack), я думаю, что предпочтительный способ проверить это на наличие appContext.ctx.req
следующим образом:
async getInitialProps (appContext) {
if (appContext.ctx.req) // server?
{
//server stuff
}
else {
// client stuff
}
}