Гэтсби - невозможно установить переменные среды

В моем gatsby-config.js я использовал пакет dotenv для установки переменных env

require("dotenv").config({
  path: `.env.${process.env.DEPLOY_ENV}`,
});

а затем в моем package.json скрипте для развертывания в разных средах

"deploy:staging": "DEPLOY_ENV=staging gatsby build --prefix-paths && s3-deploy ..."

В моем src/html.js есть актив, который я хочу включить

<script src={`//${process.env.ASSET_HOST}/app.js`}></script>

Когда я регистрирую DEPLOY_ENV из gatsby-config.js, он устанавливается на staging, однако, когда я регистрирую process.env в src/html.js, ASSET_HOST устанавливается как тот, который находится в моем .env.production файле, поэтому при развертывании для промежуточной обработки он использует активы с моего производственного хоста.


person jordan    schedule 04.05.2018    source источник
comment
ты решил это?   -  person Dejell    schedule 18.07.2019


Ответы (1)


Я думаю, что DEPLOY_ENV (как NODE_ENV) - это зарезервированная переменная среды. Вот почему DEPLOY_ENV=staging не работает в вашем случае.

Рекомендации в документации Gatsby по переменным среды использовать вторичную переменную среды для дополнительной поддержки среды.

Вы можете добавить .env.staging файл в корневую папку, куда вы поместите свой ASSET_HOST env var.

Затем запустите gatsby с ACTIVE_ENV=staging gatsby develop

person Nenu    schedule 07.05.2018
comment
что заставляет вас думать, что это зарезервированное слово? кроме того, OP спросил, как запустить сборку gatsby, а не разрабатывать - person Dejell; 18.07.2019
comment
@Dejell, вы, наверное, правы за зарезервированное слово. Мой ответ был дан год назад, и я, честно говоря, не могу вспомнить, почему я сказал это сегодня. Тем не менее, документация, на которую я ссылаюсь, была подробно описана, вы ее читали? (полная страница) - person Nenu; 19.07.2019