В Ubuntu это довольно просто; Я могу запустить приложение, используя:
$ NODE_ENV=production node myapp/app.js
Тем не менее, это не работает в Windows. Есть ли файл конфигурации, где я могу установить атрибут?
В Ubuntu это довольно просто; Я могу запустить приложение, используя:
$ NODE_ENV=production node myapp/app.js
Тем не менее, это не работает в Windows. Есть ли файл конфигурации, где я могу установить атрибут?
Текущие версии Windows используют Powershell в качестве оболочки по умолчанию, поэтому используйте:
$env:NODE_ENV="production"
За @jsalonen ответ ниже. Если вы находитесь в CMD (который больше не поддерживается), используйте
set NODE_ENV=production
Это должно быть выполнено в командной строке, где вы собираетесь запустить приложение Node.js.
В приведенной выше строке будет указана переменная среды NODE_ENV для командной строки, в которой вы выполняете команду.
Чтобы задать глобальные переменные среды таким образом, чтобы они сохранялись за пределами одной командной строки, вы можете найти инструмент в Системе на панели управления (или введя "среда" в поле поиска в меню "Пуск").
Я просто нашел приятный пакет Node.js, который может помочь многому определить переменные среды, используя уникальный синтаксис, кросс-платформу.
https://www.npmjs.com/package/cross-env
Это позволяет вам написать что-то вроде этого:
cross-env NODE_ENV=production my-command
Это довольно удобно! Нет дополнительных команд Windows или Unix!
В PowerShell:
$env:NODE_ENV="production"
Было бы идеально, если бы вы могли установить параметры в той же строке, что и ваш вызов, чтобы запустить Node.js в Windows. Внимательно посмотрите на следующее и запустите его точно так, как указано:
У вас есть два варианта:
В командной строке:
set NODE_ENV=production&&npm start
или
set NODE_ENV=production&&node index.js
Хитрость для его работы в Windows заключается в том, что вам нужно удалить пробел до и после "& & amp;". Сконфигурируйте файл package.json с помощью start_windows (см. ниже) ниже. Затем запустите "npm run start_windows" в командной строке.
//package.json
"scripts": {
"start": "node index.js"
"start_windows": "set NODE_ENV=production&&node index.js"
}
Ты можешь использовать
npm run env NODE_ENV=production
Это, вероятно, лучший способ сделать это, потому что он совместим как с Windows, так и с Unix.
Из документации по скрипту выполнения npm:
Сценарий 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>
В раскрывающемся меню "Отладка/выпуск" будет указано, как эта переменная установлена перед запуском Node.js.
Я написал модуль win-node-env, с помощью которого вы можете запускать свою команду так же, как в * nix.
NODE_ENV=production node myapp/app.js
Он работает путем создания NODE_ENV.cmd
который устанавливает NODE_ENV
среды NODE_ENV
и порождает дочерний процесс с остальной частью команды и ее аргументами.
Просто установите его (глобально) и запустите команды сценария npm, они должны автоматически заставить их работать.
npm install -g win-node-env
Мой опыт использования Node.js в Windows 7 64-бит в Visual Studio 2013 заключается в том, что вам нужно использовать
setx NODE_ENV development
из окна cmd. И вам нужно перезапустить Visual Studio, чтобы новое значение было распознано.
Синтаксис установлен только для продолжительности окна cmd, в котором он установлен.
Простой тест в Node.js:
console.log('process.env.NODE_ENV = ' + process.env.NODE_ENV);
Он возвращает 'undefined' при использовании set, и он вернет "развитие", если будет использовать setx и перезапустить Visual Studio.
Вот метод без командной строки:
В Windows 7 или 10 введите environment в поле поиска меню "Пуск" и выберите "Изменить системные переменные среды".
Либо перейдите в Панель управления\Система и безопасность\Система и нажмите Дополнительные параметры системы.
Это должно открыть диалоговое окно "Свойства системы" с выбранной вкладкой "Дополнительно". Внизу вы увидите кнопку Переменные среды... Нажмите это.
Откроется диалоговое окно "Переменные среды".
Внизу, под Системные переменные, выберите New... Откроется диалоговое окно New System Variable.
Введите имя и значение переменной и нажмите ОК.
Вам нужно будет закрыть все запросы cmd и перезапустить сервер, чтобы новая переменная была доступна для process.env. Если он по-прежнему не отображается, перезагрузите компьютер.
Просто чтобы уточнить, и для кого-то еще, кто может вытаскивать свои волосы...
Если вы используете git bash в Windows, set node_env=production&& node whatever.js
не работает. Вместо этого используйте собственный cmd. Затем, используя set node_env=production&& node whatever.js
работает как ожидалось.
Мой прецедент:
Я разрабатываю Windows, потому что мой рабочий процесс намного быстрее, но мне нужно было убедиться, что мое промежуточное программное обеспечение, зависящее от разработки приложений, не запускается в рабочей среде.
Запуск приложения в PowerShell (поскольку &&
запрещен):
($env:NODE_ENV="production") -and (node myapp/app.js)
Обратите внимание, что текстовый вывод того, что делает сервер, подавляется, и я не уверен, что это исправление. (Расширение ответа @jsalonen.)
первый тип PowerShell
$env:NODE_ENV="production"
затем введите
node fileName.js
Он будет отлично работать, отображая все результаты.
Для нескольких переменных .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)
Не забудьте проигнорировать файл .env
в вашей VCS.
Затем ваша программа быстро завершится с ошибкой, если переменная, "определенная" в .env.example
будет установлена как переменная окружения или в .env
.
NODE_ENV = production node script.js
Что обычно становится
NODE_ENV = production node app.js
Вы также можете установить N число переменных среды, запустив
NODE_ENV = производство NODE_APP_INSTANCE = 3 node app.js
Это заставит npm config
читать файл default.js
, за которым следует файл production.js
, перезаписывающий все, что является дубликатом, и, наконец, чтение production-3.js
и повторная перезапись повторяющихся записей.
это не будет устанавливать переменную, но это полезно во многих случаях. Я не буду рекомендовать использовать это для производства, но это будет хорошо, если вы играете с npm.
npm install --production
В случае, если вы используете терминал GITBASH, "set NODE_ENV=production"
не будет работать, что вы можете сделать, это набрать "export NODE_ENV=production"
Я использовал скрипт npm для запуска задачи gulp без "&&"
NODE_ENV = тестовые случаи npm run seed-db
Изменение файла package.json для меня работает в Windows 10.
Изменить:
"scripts":{
"start": "npm run *production*"
........
},