Для использования в средах express.js. Любые предложения?
Как установить NODE_ENV для производства/разработки в OS X
Ответ 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()
и прочитайте значения. Легко изменен, легко читается, перекрестная платформа.
Ответ 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"
Ответ 6
Это хорошая статья о NODE_ENV: http://www.hacksparrow.com/running-express-js-in-production-mode.html.
Для автоматической установки из Grunt вы можете использовать плагин https://npmjs.org/package/grunt-env.
Ответ 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