Для использования в средах express.js. Какие-либо предложения?
Для использования в средах express.js. Какие-либо предложения?
Ответы:
Перед запуском приложения вы можете сделать это в консоли,
export NODE_ENV=production
Или, если вы находитесь в Windows, вы можете попробовать это:
SET NODE_ENV=production
или вы можете запустить свое приложение так:
NODE_ENV=production node app.js
Вы также можете установить его в своем файле JS:
process.env.NODE_ENV = 'production';
Но я не предлагаю делать это в вашем исполняемом файле, так как нелегко открыть VIM на вашем сервере и изменить его на рабочий. Вы можете создать файл config.json в своем каталоге, и каждый раз, когда ваше приложение запускается, оно читает из него и устанавливает конфигурацию.
process.env.NODE_ENV
надежно из самого приложения. Лучше всего правильно установить переменную окружения, как это описано ниже.
NODE_ENV
явно каждый раз, когда вы запускаете приложение, как во втором примере ( NODE_ENV=production node app.js
). Таким образом, вы потенциально спасете себя от будущих затяжек, если вы забудете NODE_ENV
вернуть себе местный уровень development
.
cross-env NODE_ENV=production
работает на Windows и Linux / Mac.
NODE_ENV=production forever app.js
должен работать.
в package.json:
{
...
"scripts": {
"start": "NODE_ENV=production node ./app"
}
...
}
затем запустите в терминале:
npm start
NODE_ENV=production
в package.json не имеет особого смысла. Запуск npm start
в разработке запустит его в производство. Вы можете написать свой код так, как будто он всегда производственный, поскольку вы всегда выполняете его таким образом. Единственная причина, по которой я это делаю, - заставить другие модули (например, Express) работать в производственном режиме. Зачем вообще использовать переменные среды, если они никогда не меняются?
.env
Здесь еще никто не упоминается ? Создайте .env
файл в корне вашего приложения, затем require('dotenv').config()
и прочитайте значения. Легко меняется, легко читается, кроссплатформенный.
"mode": "production"
в .env
файле сработала.
export NODE_ENV=production
плохое решение, оно исчезает после перезагрузки.
если вы не хотите больше беспокоиться об этой переменной - добавьте ее в этот файл:
/etc/environment
не используйте синтаксис экспорта, просто напишите (в новой строке, если какой-то контент уже есть):
NODE_ENV=production
работает после перезагрузки. Вам больше не нужно будет никуда вводить команду export NODE_ENV = production и просто использовать узел с чем угодно - навсегда, pm2 ...
За героку:
heroku config:set NODE_ENV="production"
который на самом деле по умолчанию.
NODE_ENV=production gulp bundle-production-app
для связывания готовый сценарий, на сервере NODE_ENV находится в среде сервера, а на машине разработчика его нет. На некоторых машинах это кошмар, если он не установлен, и вы ожидаете, что он будет установлен всегда . В некоторых вы ожидаете, что его не будет, поэтому не добавляйте. В любом случае, делая пользовательский интерфейс, я ясно даю понять, находится ли он в режиме разработки, чтобы у вас никогда не возникало вопросов, включен он или нет. Если NODE_ENV - это! == производство, то, по вашему мнению, вы находитесь в другом режиме, так что никакого кошмара нет. Все ясно, все хорошо.
/etc/environment
и запустить export NODE_ENV=production
?
Чтобы не беспокоиться о том, выполняете ли вы свои сценарии в 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"
}
Массивные реквизиты для разработчиков этого пакета.
npm install --save-dev cross-env
heroku config:set NODE_ENV="production"
NODE_ENV=production
теперь по умолчанию в Heroku развертывается node.js.
Для Windows Powershell используйте эту команду
$env:NODE_ENV="production" ; node app.js
На OSX я бы порекомендовал добавить export NODE_ENV=development
в ваш ~/.bash_profile
и / или ~/.bashrc
и / или ~/.profile
.
Лично я добавляю эту запись в мой ~/.bashrc
и затем получаю~/.bash_profile
~/.profile
импорт содержимого этого файла, чтобы он был одинаковым для всех сред.
После внесения этих изменений обязательно перезагрузите терминал, чтобы выбрать настройки.
Если вы находитесь на окнах. Откройте ваш cmd в правой папке, затем сначала
set node_env={your env name here}
нажмите Enter, тогда вы можете начать свой узел с
node app.js
это начнется с вашей настройки env
Чтобы иметь несколько сред, вам нужны все ответы раньше (параметр 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
.
Вуаля.
Windows CMD -> set NODE_ENV=production
Windows Powershell -> $env:NODE_ENV="production"
MAC -> export NODE_ENV=production
У Даниэля есть фантастический ответ, который является лучшим подходом для правильного процесса развертывания (установить и забыть).
Для тех, кто использует экспресс. Вы можете использовать Grunt-Express-сервер, который также является фантастическим. https://www.npmjs.org/package/grunt-express-server
Это может быть шанс, что вы сделали два экземпляра объекта sequelize
например: var con1 = new Sequelize (); var con2 = new Sequelize ();
чем то же самое произойдет ошибка