Как установить NODE_ENV = производство в Windows?

В Ubuntu это довольно просто; Я могу запустить приложение, используя:

$ NODE_ENV=production node myapp/app.js

Тем не менее, это не работает в Windows. Есть ли файл конфигурации, где я могу установить атрибут?

Ответ 1

Текущие версии Windows используют Powershell в качестве оболочки по умолчанию, поэтому используйте:

$env:NODE_ENV="production"

За @jsalonen ответ ниже. Если вы находитесь в CMD (который больше не поддерживается), используйте

set NODE_ENV=production

Это должно быть выполнено в командной строке, где вы собираетесь запустить приложение Node.js.

В приведенной выше строке будет указана переменная среды NODE_ENV для командной строки, в которой вы выполняете команду.

Чтобы задать глобальные переменные среды таким образом, чтобы они сохранялись за пределами одной командной строки, вы можете найти инструмент в Системе на панели управления (или введя "среда" в поле поиска в меню "Пуск").

Ответ 2

Я просто нашел приятный пакет Node.js, который может помочь многому определить переменные среды, используя уникальный синтаксис, кросс-платформу.

https://www.npmjs.com/package/cross-env

Это позволяет вам написать что-то вроде этого:

cross-env NODE_ENV=production my-command

Это довольно удобно! Нет дополнительных команд Windows или Unix!

Ответ 3

В PowerShell:

$env:NODE_ENV="production"

Ответ 4

Было бы идеально, если бы вы могли установить параметры в той же строке, что и ваш вызов, чтобы запустить Node.js в Windows. Внимательно посмотрите на следующее и запустите его точно так, как указано:

У вас есть два варианта:

  1. В командной строке:

    set NODE_ENV=production&&npm start
    

    или

    set NODE_ENV=production&&node index.js
    
  2. Хитрость для его работы в 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"
    }
    

Ответ 5

Ты можешь использовать

npm run env NODE_ENV=production

Это, вероятно, лучший способ сделать это, потому что он совместим как с Windows, так и с Unix.

Из документации по скрипту выполнения npm:

Сценарий env - это специальная встроенная команда, которую можно использовать для отображения переменных среды, которые будут доступны сценарию во время выполнения. Если команда "env" определена в вашем пакете, она будет иметь приоритет над встроенной.

Ответ 6

Если вы используете Visual Studio с NTVS, вы можете установить переменные среды на странице свойств проекта:

Свойства проекта 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.

Ответ 7

Я написал модуль 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

Ответ 8

Мой опыт использования 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.

Ответ 9

Вот метод без командной строки:

В Windows 7 или 10 введите environment в поле поиска меню "Пуск" и выберите "Изменить системные переменные среды".

Либо перейдите в Панель управления\Система и безопасность\Система и нажмите Дополнительные параметры системы.

Это должно открыть диалоговое окно "Свойства системы" с выбранной вкладкой "Дополнительно". Внизу вы увидите кнопку Переменные среды... Нажмите это.

System Dialog Box

Откроется диалоговое окно "Переменные среды".

Environment Variable Dialog Box

Внизу, под Системные переменные, выберите New... Откроется диалоговое окно New System Variable.

enter image description here

Введите имя и значение переменной и нажмите ОК.

Вам нужно будет закрыть все запросы cmd и перезапустить сервер, чтобы новая переменная была доступна для process.env. Если он по-прежнему не отображается, перезагрузите компьютер.

Ответ 10

Просто чтобы уточнить, и для кого-то еще, кто может вытаскивать свои волосы...

Если вы используете git bash в Windows, set node_env=production&& node whatever.js не работает. Вместо этого используйте собственный cmd. Затем, используя set node_env=production&& node whatever.js работает как ожидалось.

Мой прецедент:

Я разрабатываю Windows, потому что мой рабочий процесс намного быстрее, но мне нужно было убедиться, что мое промежуточное программное обеспечение, зависящее от разработки приложений, не запускается в рабочей среде.

Ответ 11

Запуск приложения в PowerShell (поскольку && запрещен):

($env:NODE_ENV="production") -and (node myapp/app.js)

Обратите внимание, что текстовый вывод того, что делает сервер, подавляется, и я не уверен, что это исправление. (Расширение ответа @jsalonen.)

Ответ 12

первый тип PowerShell

$env:NODE_ENV="production"

затем введите

node fileName.js

Он будет отлично работать, отображая все результаты.

Ответ 13

Для нескольких переменных .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:

  1. Установите с помощью npm install --save dotenv-safe.
  2. Включите его в свой код (лучше всего в начале index.js) и напрямую используйте его с командой process.env:
require('dotenv').load()
console.log(process.env.DB_HOST)   

Не забудьте проигнорировать файл .env в вашей VCS.

Затем ваша программа быстро завершится с ошибкой, если переменная, "определенная" в .env.example будет установлена как переменная окружения или в .env.

Ответ 14

Windows git - bash | Терминал Mac OS X

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 и повторная перезапись повторяющихся записей.

Ответ 15

это не будет устанавливать переменную, но это полезно во многих случаях. Я не буду рекомендовать использовать это для производства, но это будет хорошо, если вы играете с npm.

npm install --production

Ответ 16

В случае, если вы используете терминал GITBASH, "set NODE_ENV=production" не будет работать, что вы можете сделать, это набрать "export NODE_ENV=production"

Ответ 17

Я использовал скрипт npm для запуска задачи gulp без "&&"

NODE_ENV = тестовые случаи npm run seed-db

Ответ 18

Изменение файла package.json для меня работает в Windows 10.

Изменить:

"scripts":{

    "start": "npm run *production*" 

     ........

 },