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



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



$ NODE_ENV=production node myapp/app.js


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

670   15  

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-script documentation:

сценарий 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.

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

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

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

System Dialog Box

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

Environment Variable Dialog Box

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

enter image description here

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

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

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

не забудьте игнорировать .env file 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

    Ничего не найдено.