Использование dotenv со связанным клиентским кодом
Я создаю приложение js узла как расширение Contentful UI. Код размещен здесь: https://github.com/doodybrains/media-tagging-extension
Большая часть файла глотка - котельная плита, но в конце концов все объединено в index.html
файл. Я знаю, что переменные env не должны вызываться или обрабатываться в клиентском коде, но я не знаю, как их получить до сборки проекта. Когда я запускаю репо в разработке и звоню process.env.NAME_OF_TOKEN
от src/index.js
это возвращается undefined
, Я попытался импортировать dotenv, создание конвейера gulp env и т. Д.
ЛЮБОЙ СОВЕТ будет таким полезным. Приложение развертывается в Netlify, и у меня уже есть переменные env.
благодарю вас
1 ответ
Вы можете создать другой файл js, который может использовать NODE_ENV для установки правильной переменной. Я предпочитаю звонить в службу, чтобы получить все свои свойства при запуске приложения и установить на какой-то карте. Я использую карту, чтобы установить значение в разных местах в моем коде.
Пример кода...
const env = process.env.NODE_ENV || 'local';
const sit = {
URL: 'sit url',
HOST: 'sit host',
ENV: 'sit'
};
const uat = {
URL: 'uat url',
HOST: 'uat host',
ENV: 'uat'
};
var property_service_url = config[env].URL;
var property_service_host = config[env].HOST;
Перед запуском приложения вы можете установить среду NODE_ENV=. Например в Linux.
export NODE_ENV=uat
Это обеспечит правильную настройку среды. Теперь в вашем app.js вы можете позвонить в службу для загрузки ваших свойств. Если вы не хотите вызывать службу, вы можете установить ее таким же образом, как и URL, и HOST.