Доступ к переменным среды в файле index.html

Я пытаюсь получить доступ к некоторым переменным среды внутри файла index.html. Доступны ли переменные среды во время сборки index.html? Я попробовал что-то в этом роде и могу распечатать журнал в консоли.

index.html

<script type = "text/javascript">
   console.info('this is inside index.html');
</script>

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

.env-файл

VITE_MY_VAR = 'HELLO WORLD'

index.html

<script type = "text/javascript">
   console.info('my env var', VITE_MY_VAR);
   <% console.info('test', process.env['VITE_MY_VAR']) %>
</script>

@Фил, извини, да. Я использую VITE. Только что обновил теги

Cookies 25.06.2024 03:37

Почему вы пытаетесь использовать тег <script> в своем HTML вместо того, чтобы просто использовать связанный JS-файл?

Phil 25.06.2024 03:38

К вашему сведению, если вы включите ; в конце значений .env, оно будет включено буквально. Вам также не нужны кавычки

Phil 25.06.2024 03:54
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
В настоящее время производительность загрузки веб-сайта имеет решающее значение не только для удобства пользователей, но и для ранжирования в...
Безумие обратных вызовов в javascript [JS]
Безумие обратных вызовов в javascript [JS]
Здравствуйте! Юный падаван 🚀. Присоединяйся ко мне, чтобы разобраться в одной из самых запутанных концепций, когда вы начинаете изучать мир...
Система управления парковками с использованием HTML, CSS и JavaScript
Система управления парковками с использованием HTML, CSS и JavaScript
Веб-сайт по управлению парковками был создан с использованием HTML, CSS и JavaScript. Это простой сайт, ничего вычурного. Основная цель -...
JavaScript Вопросы с множественным выбором и ответы
JavaScript Вопросы с множественным выбором и ответы
Если вы ищете платформу, которая предоставляет вам бесплатный тест JavaScript MCQ (Multiple Choice Questions With Answers) для оценки ваших знаний,...
2
3
87
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

См. Замена HTML-конверта...

Vite также поддерживает замену переменных env в файлах HTML. Любые свойства в import.meta.env можно использовать в HTML-файлах со специальным синтаксисом %ENV_NAME%.

Примечание. Для этого требуется Vite v4 или новее.

Проблема с попыткой использовать это в теге <script> заключается в цитировании и экранировании; Vite не выполняет никаких других действий, кроме прямой замены. Вам нужно будет попытаться убедиться, что в ваших значениях .env нет неэкранированных символов кавычек, когда они представлены в виде строкового литерала JavaScript.

<script>
  console.info('my env var', `%VITE_MY_VAR%`); // 👈 value must be quoted
                                              // as a string literal
</script>

Это будет непосредственно введено как

<script>
  console.info('my env var', `Hello World`);
</script>

Обратите внимание (и я это часто вижу): НЕ ЗАВЕРШАЙТЕ значения .env точкой с запятой (;). Если вы это сделаете, это будет буквально включено в стоимость.

Вам также не нужны кавычки, а если и нужны, то они все равно будут удалены.

Я бы рекомендовал сделать это как можно проще

VITE_MY_VAR=Hello World

поэтому теоретически, если значение VITE_MY_VAR равно 'Hello World'. Затем, используя то, что вы упомянули выше, %VITE_MY_VAR% следует распечатать ожидаемое значение?

Cookies 25.06.2024 03:53

Вполне возможно, что я делаю что-то не так, но вот что выводится на консоль %VITE_MY_VAR%. Вот как я пишу лог console.info('my env var', %VITE_MY_VAR%);

Cookies 25.06.2024 03:59

У меня работает Vite ^ 4.4.5. Я добавил VITE_MY_VAR=Hello World к .env, добавил блок <script> к index.html, запустил yarn dev и открыл страницу localhost:5173. Убедитесь, что вы редактируете index.html, который находится в корне вашего проекта.

Phil 25.06.2024 04:02

хм, я в деле "vite": "^3.1.6"

Cookies 25.06.2024 04:04

Vite v3 не имеет функции замены HTML. ему тоже почти 3 года

Phil 25.06.2024 04:05

Мне интересно, будет ли реактивный шлем лучшей идеей, чем обновление vite

Cookies 25.06.2024 04:07

Вы не ответили на мой вопрос о том, зачем вам это вообще нужно. Честно говоря, для меня это не имеет смысла, когда вы можете просто использовать import.meta.env.VITE_MY_VAR в одном из ваших связанных файлов JS/компонентов React.

Phil 25.06.2024 04:10

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

Cookies 25.06.2024 04:14

Обновление до 4.4.5 решило проблему, как описано.

Cookies 25.06.2024 04:22

Ах, это имеет больше смысла, чем console.info() :D

Phil 25.06.2024 05:17

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