Как установить NODE_ENV для производства/разработки в OS X

Для использования в средах express.js. Любые предложения?

Ответ 1

Перед запуском приложения вы можете сделать это в консоли,

export NODE_ENV=production

Или, если вы находитесь в окнах, вы можете попробовать следующее:

SET NODE_ENV=production

или вы можете запустить свое приложение следующим образом:

NODE_ENV=production node app.js

Вы также можете установить его в файле js:

process.env.NODE_ENV = 'production';

Но я не предлагаю сделать это в вашем файле времени исполнения, так как не легко открыть VIM на вашем сервере и изменить его на производство. Вы можете сделать файл config.json в своем каталоге, и каждый раз, когда ваше приложение запускается, оно считывает его и устанавливает конфигурацию.

Ответ 2

в package.json:

{
  ...
  "scripts": {
    "start": "NODE_ENV=production node ./app"
  }
  ...
}

затем запустите в терминале:

npm start

Ответ 3

Никто еще не упомянул .env? Создайте файл .env в корне приложения, затем require('dotenv').config() и прочитайте значения. Легко изменен, легко читается, перекрестная платформа.

https://www.npmjs.com/package/dotenv

Ответ 4

export NODE_ENV=production - плохое решение, оно исчезает после перезапуска.

если вы хотите больше не беспокоиться об этой переменной - добавьте его в этот файл:

/etc/environment

не использовать синтаксис экспорта, просто напишите (в новой строке, если какой-то контент уже существует):

NODE_ENV=production

он работает после перезагрузки. Вам больше не придется повторно вводить экспорт NODE_ENV = производственной команды и просто используйте node с чем угодно - навсегда, pm2...

Для герою:

heroku config:set NODE_ENV="production"

который фактически является значением по умолчанию.

Ответ 5

heroku config:set NODE_ENV="production"

Ответ 7

Чтобы не беспокоиться о том, выполняете ли вы свои сценарии в Windows, Mac или Linux, установите пакет cross-env. Тогда вы можете легко использовать свои сценарии, например:

"scripts": {
    "start-dev": "cross-env NODE_ENV=development nodemon --exec babel-node -- src/index.js",
    "start-prod": "cross-env NODE_ENV=production nodemon --exec babel-node -- src/index.js"
}

Массовые реквизиты для разработчиков этого пакета.

Ответ 8

Для Windows Powershell используйте эту команду

$env:NODE_ENV="production" ; node app.js

Ответ 9

В OSX я бы рекомендовал добавить export NODE_ENV=development к вашим ~/.bash_profile и/или ~/.bashrc и/или ~/.profile.

Лично я добавляю эту запись в мой ~/.bashrc, а затем ~/.bash_profile ~/.profile импортирует содержимое этого файла, поэтому он согласован в разных средах.

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

Ответ 10

Если вы используете webpack в своем приложении, вы можете просто установить его там, используя DefinePlugin...

Итак, в разделе plugin установите NODE_ENV на production:

plugins: [
  new webpack.DefinePlugin({
    'process.env.NODE_ENV': '"production"',
  })
]

Ответ 11

Если вы находитесь в окнах. Откройте ваш cmd в правой папке, затем сначала

set node_env={your env name here}

нажмите enter, затем вы можете запустить node с помощью

node app.js

он начнется с настройки вашего env

Ответ 12

У Даниэля есть фантастический ответ, который лучше подходит для правильного развертывания (установить и забыть).

Для тех, кто использует экспресс. Вы можете использовать grunt-express-server, который также является фантастическим. https://www.npmjs.org/package/grunt-express-server

Ответ 13

Чтобы иметь несколько сред, вам нужны все ответы раньше (параметр NODE_ENV и его экспорт), но я использую очень простой подход без необходимости что-либо устанавливать. В ваш package.json просто поместите скрипт для каждой нужной вам среды, например:

...
"scripts": {
    "start-dev": "export NODE_ENV=dev && ts-node-dev --respawn --transpileOnly ./src/app.ts",
    "start-prod": "export NODE_ENV=prod && ts-node-dev --respawn --transpileOnly ./src/app.ts"
  }
 ...

Затем, чтобы запустить приложение вместо npm start, используйте npm run script-prod.

В коде вы можете получить доступ к текущей среде с помощью process.env.NODE_ENV.

Вуаля.

Ответ 14

Windows CMD → set NODE_ENV=production

Windows Powershell → $env:NODE_ENV="production"

MAC → export NODE_ENV=production