Как установить узел ENV=production в Windows?

в Ubuntu очень просто, я могу запустить приложение, используя:

$ NODE_ENV=production node myapp/app.js

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

15 ответов


попробуйте использовать

set NODE_ENV=production

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

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

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


В PowerShell:

$env:NODE_ENV="production"

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

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

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

cross-env NODE_ENV=production my-command

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


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

у вас есть эти два варианта:

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

    set NODE_ENV=production&&npm start
    

    или

    set NODE_ENV=production&&node index.js
    
  2. запустите "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 можно задать переменные среды на странице свойств проекта:

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>

раскрывающийся список "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 в поле поиска меню Пуск и выберите Изменить системные переменные среды.

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

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

System Dialog Box

окружающая среда коробка переменных откроется.

Environment Variable Dialog Box

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

enter image description here

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

вам нужно будет закрыть все приглашения 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:

  1. установить с npm install --save dotenv-safe.
  2. включите его в свой код (лучше всего в начале 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"