2016-03-16 1 views
0

Я создаю приложение узла, которое возвращает результаты поиска, используя Google Custom Search Engine (CSE).Использование dotenv в модуле узла Node

Я собираюсь отделить часть приложения, которое отправляет запрос в Google, и возвращает результаты в модуль.

Я использую dotenv уже в приложении для хранения учетных данных MongoDB и URL приложения.

Я также хочу использовать dotenv в модуле для хранения идентификатора CSE Google и ключа API для CSE.

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

В настоящее время моя структура модуля выглядит следующим образом:

module 
| 
+-- node_modules 
| | 
| \-- dotenv 
|  | 
|  \-- (dotenv module's files....) 
| 
+-- .env 
| 
\-- index.js 

Это отлично работает на своей собственной. В файле .env хранятся необходимые переменные среды, и я могу получить к ним доступ в файле index.js, требуя модуля dotenv.

При включении в главном приложении структура выглядит следующим образом:

app 
| 
+-- node_modules 
| | 
| +-- dotenv 
| | | 
| | \-- (dotenv module's files....) 
| | 
| \-- my_google_search_module 
|  | 
|  +-- node_modules 
|  | | 
|  | +-- dotenv 
|  |  | 
|  |  \-- (dotenv module's files...) 
|  | 
|  \-- index.js 
| 
+-- .env 
| 
\-- index.js 

Это также работает. Я сохраняю все переменные среды в файле .env основного приложения и требуя dotenv в index.js приложения. Я могу получить доступ к этим переменным. Кроме того, «my_google_search_module», похоже, вытаскивает необходимые переменные из файла .env в корневое приложение. В модуле нет .env-файла.

Мой вопрос: я делаю это правильно?

ответ

0

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

Я считаю, что этот раздел из dotenv ридми, хотя и не совсем связаны, подтверждает, что - https://www.npmjs.com/package/dotenv#what-happens-to-environment-variables-that-were-already-set

Мы никогда не будет изменять переменные окружения, которые уже были множество. В частности, если в вашем .ENV-файле есть переменная, которая сталкивается с той, которая уже существует в вашей среде, то переменная будет пропущена. Такое поведение позволяет вам переопределить все конфигурации .env с конкретной машиной средой, хотя это не рекомендуется .