Я использую webstorm, и я попытался установить переменную среды, используя
set NODE_ENV=development
и когда я проверяю переменную for для среды, используя
echo%NODE_ENV%
Я получаю развитие в качестве ответа.
Но в моем приложении-узле, когда я проверяю переменную, используя
var b= process.env.NODE_ENV;
я получил
b:undefined
Я даже попытался использовать следующее в файле package.json
"start": "set node ./bin/www && NODE_ENV=production "
все равно я становлюсь неопределенным. Я не знаю, в чем проблема.
Вместо этого используйте экспорт
"start": "export NODE_ENV=production && node./bin/www"
Сначала вы должны установить переменную, а затем запустить скрипт:
"start": "set NODE_ENV=production&& node ./bin/www"
Обратите внимание, что это будет работать только в Windows. Если вы хотите использовать кросс-платформенное решение, используйте пакет cross-env
:
cross-env NODE_ENV=production node ./bin/www
cross-env
.
Если у вас есть отдельный файл config.js, убедитесь, что он первый. У вас может быть состояние гонки.
Вчера я столкнулся с чем-то подобным. Это может быть или не быть вашей проблемой. Когда я запускал свой код, моя переменная окружения была не определена. Я переместил всю библиотеку в отдельный модуль. Мне нужен этот модуль. Моя проблема заключалась в том, что мои требования были не в порядке, поэтому, когда он спросил, он еще не был установлен. Я переместил свой файл config.js, требуемый выше моего пакета библиотеки.
Следующее - это то, что работает для меня, поскольку моя цель - поддерживать зависимость пакета от того, что мне действительно нужно:
"startwin": "SET NODE_ENV=production& SET SOME_TOKEN=123abc& node ./bin/www",
"start": "NODE_ENV=production SOME_TOKEN=123abc node ./bin/www"
Недостатком является каждый раз, когда требуется другое окружение var, у меня есть 2 места для редактирования, но это вряд ли усиливает (по крайней мере, в моем случае, ваш может быть другим).
$node -v