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-script documentation:
сценарий 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.
мой опыт использования узла.js на Windows 7 64-бит в Visual Studio 2013-это то, что вам нужно использовать
setx NODE_ENV developmentиз командной строки. И вам нужно перезапустить Visual Studio, чтобы новое значение было распознано.
синтаксис набора длится только в течение времени действия окна cmd, в котором он установлен.
простой тест в узел.js:
console.log('process.env.NODE_ENV = ' + process.env.NODE_ENV);он возвращает 'undefined' при использовании set, и он вернет 'development' при использовании 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 и перезагрузить сервер для новой переменной быть доступны для обработки.ОКР. Если он по-прежнему не отображается, перезагрузите компьютер.
на несколько переменные окружения, an
.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)не забудьте игнорировать
.envfile 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"




Comments