Как я могу установить NODE_ENV = производство в Windows? - PullRequest
293 голосов
/ 12 февраля 2012

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

$ NODE_ENV=production node myapp/app.js

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

Ответы [ 16 ]

419 голосов
/ 12 февраля 2012

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

$env:NODE_ENV="production"

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

set NODE_ENV=production

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

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

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

174 голосов
/ 10 февраля 2016

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

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

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

cross-env NODE_ENV=production my-command

Что довольно удобно! Больше никаких специальных команд для Windows или Unix!

159 голосов
/ 09 октября 2012

В PowerShell:

$env:NODE_ENV="production"
76 голосов
/ 16 мая 2015

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

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

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

    set NODE_ENV=production&&npm start
    

    или

    set NODE_ENV=production&&node index.js
    
  2. Запустите «npm run start_windows» в командной строке с вашим файлом package.json, настроенным как показано ниже

    //package.json
    
    "scripts": {
      "start": "node index.js"
      "start_windows": "set NODE_ENV=production&&node index.js"
    }
    

Хитрость для того, чтобы он работал в Windows, заключается в том, что вам нужно удалить пробел до и после «&&».

28 голосов
/ 09 сентября 2015

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

npm run env NODE_ENV=production

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

Из документации npm run-script:

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

13 голосов
/ 19 октября 2015

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

Visual Studio NTVS Project Properties

Как видите,раскрывающиеся списки «Конфигурация» и «Платформа» отключены (я не слишком задумывался над тем, почему это так), но если вы отредактируете файл .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.

8 голосов
/ 12 сентября 2018

Я написал модуль win-node-env , с помощью которого вы можете запустить свою команду так же, как в * nix.

NODE_ENV=production node myapp/app.js

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

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

npm install -g win-node-env
8 голосов
/ 02 июня 2014

Мой опыт использования Node.js в 64-битной Windows 7 в Visual Studio 2013 заключается в том, что вам нужно использовать

setx NODE_ENV development

из окна cmd.И вам нужно перезапустить Visual Studio, чтобы новое значение было распознано.

Заданный синтаксис действует только в течение времени окна cmd, в котором он установлен.

Простой тест вNode.js:

console.log('process.env.NODE_ENV = ' + process.env.NODE_ENV);

Возвращает «неопределенное» при использовании set и возвращает «развитие» при использовании setx и перезапуске Visual Studio.

6 голосов
/ 03 апреля 2018

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

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

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

. Откроется диалоговое окно «Свойства системы» с выбранной вкладкой «Дополнительно».Внизу вы увидите кнопку Переменные среды ...Щелкните по этому.

System Dialog Box

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

Environment Variable Dialog Box

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

enter image description here

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

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

6 голосов
/ 09 января 2017

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

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

Мой вариант использования:

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...