2015-03-17 4 views
24

Я пытаюсь запустить сервер hot dev на нашем сайте с помощью webpack; сайт использует ReactJS, который имеет этот код в нем:React + webpack: 'process.env' не определен

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

Когда не работает горячей замены, это хорошо, но с возможностью горячей замены, он будет запущен, в результате ошибки:

TypeError: process.env is undefined 

код выглядит следующим образом:

error is on this line

проект смоделирован https://github.com/webpack/react-starter который делает работ; так что вопрос: какую ошибку я сделал в файле конфигурации и/или как мне искать ошибку, когда компиляция «production» работает нормально?

Я разместил gist of the webpack config file.

+0

Что такое «с горячей заменой»? 'hot dev server'? – Green

ответ

24

В вашем WebPack конфигурации, есть два варианта, которые могут повлиять на process.env:

Глядя на ваш код, он выглядит как process.env может быть не определено, когда оба options.prerender и options.minimize: false.

Вы можете исправить это, всегда используя среду, которая определяет process.env (например: node), или с помощью DefinePlugin, чтобы назначить значение по умолчанию для переменной самостоятельно.

+1

Когда вы используете Webpack для упаковки серверного приложения ('target: 'node''),' DefinePlugin', похоже, перезаписывает 'process.env' i.s.o. добавив к нему. У меня были проблемы с чтением enok Heroku. переменной 'process.env.PORT', пока я не удалю' DefinePlugin' из моей конфигурации webpack. –

6

Этот ответ дал мне больше смысла. Проводка для других с одинаковой потребностью для полного примера.

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

+1

Да! Спасибо! Посмотрев на ваш пример, я понял, что я запускаю webpack на heroku, когда мне нужно было запустить его на моей машине разработки. – BishopZ

2

Это самый простой способ:

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

Добавим, что в список WebPack плагинов.

+0

Это сработало для меня ... кроме того, вы можете быть более ясными, если у вас есть ключи или секреты в вашей среде, потому что это тянет ВСЕ. – Relic

Смежные вопросы