Как установить узел ENV=production в Windows?
в Ubuntu очень просто, я могу запустить приложение, используя:
$ NODE_ENV=production node myapp/app.js
однако это не работает в Windows. Есть ли файл конфигурации, где я могу установить атрибут?
15 ответов
попробуйте использовать
set NODE_ENV=production
Это должно быть выполнено в командной строке, где вы собираетесь запустить свой узел.приложение js.
в приведенной выше строке будет установлена переменная среды NODE_ENV для командной строки, в которой вы выполняете команду.
чтобы установить переменные среды глобально, чтобы они сохранялись за пределами только одной командной строки, вы можете найти инструмент из системы на панели управления (или введя "среда" в поле поиска в начале меню.)
Я только что нашел хороший узел.пакет js, который может помочь определить переменные среды, используя уникальный синтаксис, кросс-платформу.
https://www.npmjs.com/package/cross-env
Это позволит вам написать что-то вроде этого:
cross-env NODE_ENV=production my-command
что довольно удобно! Нет Windows или Unix конкретных команд больше!
было бы идеально, если бы вы могли установить параметры в той же строке, что и ваш вызов для запуска узла.js на окнах. Внимательно посмотрите на следующее и запустите его точно так, как указано:
у вас есть эти два варианта:
-
в командной строке:
set NODE_ENV=production&&npm start
или
set NODE_ENV=production&&node index.js
-
запустите "npm run start_windows" в командной строке с вашим пакетом.файл json, настроенный как ниже
//package.json "scripts": { "start": "node index.js" "start_windows": "set NODE_ENV=production&&node index.js" }
трюк для его работы на Windows, вам нужно удалить пробелы до и после"&&".
можно использовать
npm run env NODE_ENV=production
Это, вероятно, лучший способ сделать это, потому что он совместим с Windows и Unix.
С npm run-документация по сценарию:
сценарий env-это специальная встроенная команда, которая может использоваться для перечисления переменных среды, которые будут доступны сценарию во время выполнения. Если команда" env " определена в вашем пакете, она будет иметь приоритет над встроенной.
при использовании Visual Studio с NTVS можно задать переменные среды на странице свойств проекта:
Как вы можете видеть, выпадающие списки конфигурации и платформы отключены (я не слишком глубоко изучил, почему это так), но если вы отредактируете свой .njsproj
файл выглядит следующим образом:
<PropertyGroup Condition=" '$(Configuration)' == 'Debug' ">
<DebugSymbols>true</DebugSymbols>
<Environment>NODE_ENV=development</Environment>
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)' == 'Release' ">
<DebugSymbols>true</DebugSymbols>
<Environment>NODE_ENV=production</Environment>
</PropertyGroup>
раскрывающийся список "Debug / Release" будет контролировать, как переменная устанавливается перед запуском узла.js.
мой опыт использования Node.js в Windows 7 64-бит в Visual Studio 2013 - это то, что вам нужно использовать
setx NODE_ENV development
из окна cmd. И вам нужно перезапустить Visual Studio, чтобы новое значение было распознано.
синтаксис set длится только в течение времени окна cmd, в котором он установлен.
простой тест в узел.js:
console.log('process.env.NODE_ENV = ' + process.env.NODE_ENV);
он возвращает "undefined" при использовании set, и он вернет "развитие" при использовании setx и перезапуск Visual Studio.
для запуска приложения в PowerShell (начиная с &&
запрещен):
($env:NODE_ENV="production") -and (node myapp/app.js)
обратите внимание, что текстовый вывод того, что делает сервер, подавляется, и я не уверен, что это исправимо. (Расширяя ответ @jsalonen.)
просто уточнить,и для тех, кто может вытащить свои волосы...
Если вы используете Git bash на Windows, set node_env=production&& node whatever.js
не работает. Вместо этого используйте собственный cmd. Затем, используя set node_env=production&& node whatever.js
работает, как ожидалось.
мой пример:
Я разрабатываю Windows, потому что мой рабочий процесс большое быстрее, но мне нужно было убедиться, что промежуточное программное обеспечение моего приложения не работает в производственная среда.
вот метод не командной строки:
в Windows 7 или 10 введите environment в поле поиска меню Пуск и выберите Изменить системные переменные среды.
кроме того, перейдите к панели управления\Система и безопасность\Система и нажмите дополнительные системные настройки
этого следует открыть диалоговое окно Свойства системы на вкладке Дополнительно. Внизу вы увидите Переменные среды... кнопка. Щелчок этот.
окружающая среда коробка переменных откроется.внизу, в разделе системные переменные, выберите Создать...Откроется диалоговое окно новая системная переменная.
введите имя и значение переменной и нажмите кнопку ОК.
вам нужно будет закрыть все приглашения cmd и перезапустить сервер для новой переменной быть доступны для обработки.env. Если он по-прежнему не отображается, перезагрузите компьютер.
на несколько переменные среды .env
файл удобнее:
# .env.example, committed to repo
DB_HOST=localhost
DB_USER=root
DB_PASS=s1mpl3
# .env, private, .gitignore it
DB_HOST=real-hostname.example.com
DB_USER=real-user-name
DB_PASS=REAL_PASSWORD
легко использовать dotenv-safe
:
- установить с
npm install --save dotenv-safe
. - включите его в свой код (лучше всего в начале
index.js
) и непосредственно использовать его сprocess.env
команда:
require('dotenv').load()
console.log(process.env.DB_HOST)
не забудьте игнорировать in ваш VCS.
ваша программа затем быстро терпит неудачу, если переменная "определена" в .env.example
не задано ни как переменная среды, ни в .env
.
сначала в powershell введите
$env:NODE_ENV="production"
введите
node fileName.js
оно будет работать совершенно показывающ все выходы.
Я написал модуль win-node-env С которым вы можете запустить свою команду так же, как в *nix.
NODE_ENV=production node myapp/app.js
он работает, создавая NODE_ENV.cmd
задает NODE_ENV
переменные среды и порождает дочерний процесс с остальной частью команды и ее аргументы.
просто установите его (глобально) и запустите команды сценария npm, он должен автоматически заставить их работать.
npm install -g win-node-env
это не создаст переменную, но это полезно во многих случаях. Я не буду рекомендовать использовать это для производства, но это должно быть хорошо, если вы играете с npm.
npm install --production
Если вы используете терминал GITBASH
"set NODE_ENV=production"
не будет работать, что вы можете сделать, - это тип
"экспорт NODE_ENV=production"