J'utilise un serveur express client avec Next.js. Il fonctionne dans un conteneur. Je fais une demande http avec isomorphic-fetch
pour obtenir des données pour mon rendu. Je voudrais faire localhost
lors de l'exécution sur le serveur et mysite.com
lors de l'exécution sur le client. Je ne suis pas sûr de la meilleure façon d'y parvenir. Je peux le faire piraté en faisant const isServer = typeof window === 'undefined'
mais cela semble assez mauvais.
Vous pouvez utiliser process.browser
pour faire la distinction entre l'environnement serveur (NodeJS) et l'environnement client (navigateur).
process.browser
est true
sur le client et undefined
sur le serveur.
Une note supplémentaire est que componentDidMount()
est toujours appelé sur le navigateur. Je charge souvent l'ensemble de données initial (contenu de référencement dans getInitialProps()
, puis charge plus de données en profondeur dans la méthode componentDidMount()
.
Puisque je n'aime pas dépendre de choses étranges de tiers pour ce comportement (même si process.browser
semble provenir de Webpack ), je pense que la meilleure façon de vérifier est la présence de appContext.ctx.req
comme ça:
async getInitialProps (appContext) {
if (appContext.ctx.req) // server?
{
//server stuff
}
else {
// client stuff
}
}