web-dev-qa-db-fra.com

React + webpack: 'process.env' n'est pas défini

J'essaie d'exécuter le serveur de dev hot sur notre site avec webpack; le site utilise ReactJS, qui contient ce code:

if (\"production\" !== process.env.NODE_ENV) // etc

Si vous ne lancez pas le remplacement à chaud, c'est bien, mais avec le remplacement à chaud, il s'exécute, ce qui entraîne l'erreur:

TypeError: process.env is undefined

Le code ressemble à ceci:

error is on this line

Le projet est modélisé d'après https://github.com/webpack/react-starter qui fonctionne ; donc la question est; Quelle erreur ai-je commise dans le fichier de configuration et/ou comment rechercher l'erreur lorsque la compilation "de production" fonctionne correctement?

J'ai posté le résumé du fichier de configuration du webpack .

31
Henrik

Dans votre configuration Webpack, deux options peuvent affecter process.env:

En regardant votre code, il semble que process.env Soit indéfini lorsque options.prerender Et options.minimize Sont tous deux false.

Vous pouvez résoudre ce problème en utilisant toujours un environnement définissant process.env (Ex: node) ou en utilisant DefinePlugin pour attribuer vous-même une valeur par défaut à la variable.

31

C'est le moyen le plus simple:

new webpack.EnvironmentPlugin( { ...process.env } )

Ajoutez cela à votre liste de plugins webpack.

8
Matt

Cette réponse a eu plus de sens pour moi. Poster pour les autres avec le même besoin d'un exemple complet.

https://github.com/webpack/webpack/issues/868

7
Grant Eagon