Статический доступ к веб-сайту переменной среды: «процесс не определен»

У меня есть статический веб-сайт, разработанный с помощью 11ty (SSG на основе узла), который содержит контактную форму, которая отправляет запрос на API nodemailer с данными. Оба размещены на Render как статический веб-сайт и веб-служба соответственно, и у них есть общий пароль для аутентификации, который я сохранил в каждом проекте как переменную среды.

Веб-служба отлично обращается с переменными. Однако событие статического веб-сайта представляет мне ошибку в заголовке «процесс» не определен, как в «process.env.VARIABLE_NAME», как я к ним обращаюсь. Я попытался включить в проект секретный файл .env с тем же ключом и включить в проект dotenv, но без изменений.

Я предполагаю, что природа статического сайта делает так, что переменная окружения каким-то образом не обрабатывается/не применяется. Какие возможные шаги я мог пропустить здесь?

РЕДАКТИРОВАТЬ: хотя мне кажется, что это возможно сделать с помощью таких методов, как аргументы командной строки (которые затем вводятся в код в процессе сборки), это не сработает для моего случая, поскольку пароль должен быть секретным в созданных исходных файлах. Пакет dotenv в моем случае не сработал. Наконец, я решил отказаться от этой аутентификации на основе пароля и просто использовать поля приманки для предотвращения спама и заголовки CORS Origin в API для управления источником запроса.

1 ответ

Ваш статический сайт работает в другом контексте, чем ваш веб-сервис (который действует как сервер). Поскольку ваш статический сайт запускается из пользовательского браузера, он не понимает специфичные для узла функции, такие как загрузка файлов или доступ к вашей среде процесса.

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

Обычным подходом к этому было бы создание собственного API, который принимает запрос от вашего статического сайта и взаимодействует напрямую с API, или стек технологий, который передает рендеринг страницы на сервер (например, ServerSideRendering). Таким образом, ВАША система позаботится о вызове API, в то время как запросы ваших пользователей ограничены.

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