Использование 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.

Другие вопросы по тегам