При запуске приложения Node, как Node узнает, в какой среде оно работает?

Я понимаю, что среда определяется внутри process.env.NODE_ENV, но как и где определяется эта переменная?

4
charliesneath 28 Авг 2017 в 15:38

3 ответа

Лучший ответ

Существует несколько способов установки переменных узлов, но наиболее распространенные

< Сильный > 1 . чтобы запустить консоль с включенным следующим образом:

> NODE_ENV=prod node start.js
process.env.NODE_ENV // prod

Но бывают случаи, когда вы можете явно установить env до начала файла:

process.env.NODE_ENV = 'test';
require('config') // then it will return me the test.json config

// I use this technique mostly for unit tests

< Сильный > 2 . экспортировать envars в package.json

  "scripts": {
    "start": "export NODE_ENV=dev && node server.js", // for linux
    "start": "set NODE_ENV=dev && node server", // for windows
    "test": "mocha"
  },

Когда вы запускаете npm start, скрипт запускает сервер в режиме dev


< Сильный > 3 . используйте пакет npm в качестве dotenv и настройте файл .env

Плагины для управления env как dotenv наиболее часто используемые. Где вы можете создать .env файлы с необходимыми переменными ENV

DB_HOST=localhost
DB_USER=root
DB_PASS=s1mpl3
1
Alexandru Olaru 28 Авг 2017 в 13:10

Переменная не определена, если вы ее не определите.
Я полагаю, вы используете обычный компьютер с Windows.
На Windows вы можете просто сделать это. создайте случайный индексный файл и поместите его в него: console.log(process.env.NODE_ENV) и затем запустите его с: set NODE_ENV=productionEnvironment && node index

0
Kaan 28 Авг 2017 в 12:55

Обычно они задаются в командах package.json или поступают из файла .env.

Например, NODE_ENV=development из файла .env можно открыть в process.env.NODE_ENV.

Для загрузки .env файлов в process.env ознакомьтесь с dotenv.

0
psilocybin 28 Авг 2017 в 12:54