2015-03-17 12 views
24

Ich versuche, den heißen dev Server auf unserer Seite mit webpack zu laufen; Die Website verwendet ReactJS, die diesen Code in sich hat:+ webpack: ‚process.env‘ nicht definiert ist

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

Wenn nicht Hot-Swap läuft es ist in Ordnung, aber mit dem Hot-Swap, wird es laufen, in dem Fehler führt:

TypeError: process.env is undefined 

Der Code sieht wie folgt aus:

error is on this line

Das Projekt wird nach dem Vorbild https://github.com/webpack/react-starter die tut Arbeit; Die Frage ist also; Welchen Fehler habe ich in der Konfigurationsdatei gemacht und/oder wie gehe ich nach dem Fehler, wenn die Kompilierung "Produktion" funktioniert?

habe ich die gist of the webpack config file geschrieben.

+0

Was ist 'mit Hot-Swap'? 'heißer Entwickler-Server'? – Green

Antwort

24

In Ihrem webpack Config gibt es zwei Optionen, die process.env beeinflussen können:

Blick auf den Code, es ist wie process.env könnte aussieht undefiniert, wenn sowohl als auch options.minimizefalse sind.

Sie können dies beheben, indem Sie immer eine Umgebung verwenden, die process.env (ex: node) definiert, oder indem Sie DefinePlugin verwenden, um der Variablen einen Standardwert zuzuweisen.

+1

Wenn Sie Webpack verwenden, um eine serverseitige App zu packen ('target: 'node'), scheint' DefinePlugin' 'process.env' i.s.o zu überschreiben. Hinzufügen dazu. Ich hatte Probleme, Heroku env zu lesen. Variable 'process.env.PORT', bis ich' DefinePlugin' aus meiner Webpack-Konfiguration entfernt habe. –

6

Diese Antwort machte mehr Sinn für mich. Stellen Sie für andere mit dem gleichen Bedarf für ein komplettes Beispiel.

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

+1

Ja! Vielen Dank! Nachdem ich Ihr Beispiel betrachtet hatte, wurde mir klar, dass ich Webpack auf Heroku laufen ließ, als ich es nur auf meinem Entwicklungscomputer ausführen musste. – BishopZ

2

Dies ist die einfachste Art und Weise:

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

hinzufügen, dass Plug-in in der Liste des webpack.

+0

Das funktionierte für mich ... außer, Sie möchten vielleicht expliziter sein, wenn Sie Schlüssel oder Geheimnisse in Ihrer Umgebung haben, weil das ALLES zieht. – Relic

Verwandte Themen