Как вы ссылаетесь на процесс.переменная env в HTML

у меня есть приложение react и я использую dotenv-webpack для управления ключами API.

Я: - создал .env с ключами API и gitignored его. - требуется и добавлен dotenv в качестве плагина в webpack.конфиг.js.

после этого я смог ссылаться на один из ключей в a .файл JS с помощью процесса.env.ключ API. Но у меня возникли проблемы с попыткой ссылаться на него в индексе.HTML в теге script.

.HTML-код:
<!DOCTYPE html>
<html>
  <head>
    <meta name="viewport" content="width=device-width, initial-scale=1">
    <link rel="stylesheet" href="/style/style.css">
    <link rel="stylesheet" href="https://cdn.rawgit.com/twbs/bootstrap/48938155eb24b4ccdde09426066869504c6dab3c/dist/css/bootstrap.min.css">
    <script src="https://maps.googleapis.com/maps/api/js?key=process.env.GOOGLEMAP_API_KEY"></script>
  </head>
  <body>
    <div class="container"></div>
  </body>
  <script src="/bundle.js"></script>
</html>

как я могу ссылаться процесс.env.API_key здесь?

<script src="https://maps.googleapis.com/maps/api/js?key=[API_KEY]"></script>

Я пробовал использовать backquotes, которые работают .JS файл, например, так ${API_KEY}, но это не работает .HTML-файл.

2 ответов


я помещаю следующий код в componentWillMount, где отображается карта и это сработало (по крайней мере, в разработке: const API_KEY = процесс.env.GOOGLEMAP_API_KEY; const script = документ.createElement ('script'); script.СРЦ = https://maps.googleapis.com/maps/api/js?key=${API_KEY}; документ.голова.добавить (скрипт);

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


решение

вы не можете ссылаться на process.env переменной непосредственно внутри html.

создать свой собственный шаблон index.html и замените url api параметром.

HtmlWebpackPlugin

упрощает создание HTML-файлов для обслуживания пакетов webpack.

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

Webpack.конфиг.js

HtmlWebpackPlugin позволяет создавать и передавать параметры в шаблон:

   const api_key = process.env.api_key;
   const HtmlWebpackPlugin = require('html-webpack-plugin');

    module.exports = {
      entry: 'index.js',
      plugins: [
        new HtmlWebpackPlugin({
          inject: false,
          template: './template.html',

          // Pass the full url with the key!
          apiUrl: `https://maps.googleapis.com/maps/api/js?key=${api_key}`,

        });
      ]
    }

шаблон.HTML-код

внутри шаблона, вы можете получить доступ к параметру:

<script src="<%= htmlWebpackPlugin.options.apiUrl %>"></script>

посмотреть: Написание Собственных Шаблонов

Примечания

это модифицированный ответ из этого комментарий, пожалуйста, прочитайте полный разговор.