Определение массива как переменной среды в node.js

У меня есть массив, из которого я извлекаю данные.

festivals = ['bonnaroo', 'lollapalooza', 'coachella']

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

Использует ли строку JSON в качестве переменной среды путь?

Ответ 1

В этом случае это не похоже на env var - путь.

Как правило, вы хотите использовать переменные среды, чтобы предоставить информацию о своем приложении об окружающей среде или настроить его поведение: к какой базе данных подключиться, какие токены использовать, сколько рабочих для вилки, независимо от того, и т.п.

Ваш пример больше похож на модель, поэтому что-то вроде базы данных, вероятно, лучше подходит.

Тем не менее, нет никакого контекста вокруг того, что делает ваше приложение или как он использует festivals, поэтому, если окажется, что вы должны использовать env var, то у вас есть несколько вариантов. Простейшим является, вероятно, просто использовать пробел или запятую.

heroku config:set FESTIVALS="bonnaroo lollapalooza coachella"

тогда:

var festivals = process.env.FESTIVALS.split(' ');

раскрытие: я являюсь владельцем платформы Node.js в Heroku

Ответ 2

Вероятно, это зависит от ваших данных. Например, если ни одно из значений никогда не будет содержать запятую, вы можете просто сделать его разделенным запятой, а затем разбить на запятую (например, начать свое приложение с помощью FOO=bar,baz,quux node myapp.js затем выполнить var foo = process.env.FOO.split(',') в myapp.js).

В противном случае, если ваши входные значения могут быть более сложными, JSON, вероятно, будет легче всего работать.

Ответ 3

Ваш пример выглядит больше перечисления, чем массив конфигурации. Я настоятельно рекомендую использовать модель, чтобы сохранить ее.

В случае, если вы ссылаетесь на приведенный выше массив просто в качестве примера, и вам более интересно узнать, как можно хранить массивы в файле env -

Краткий ответ: вы не можете.

Длинный ответ: переменные .env являются строками

BOOLEAN = true

будет рассматриваться как

BOOLEAN = "true"

и так будет

FESTIVALS = ['bonnaroo', 'lollapalooza', 'coachella'] 

рассматриваться как

FESTIVALS = "['bonnaroo', 'lollapalooza', 'coachella']"

Решение:

Вы можете сохранить массив в виде строки с разделителями в .env

FESTIVALS = "bonnaroo, lollapalooza, coachella"

В вашем файле JS вы можете преобразовать его в массив, используя

var festivals = process.env.FESTIVALS.split(",");