【问题标题】:Gatsby - Unable to set environment variablesGatsby - 无法设置环境变量
【发布时间】:2018-10-15 04:17:02
【问题描述】:

在我的gatsby-config.js 中,我使用了dotenv 包来设置环境变量

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>

当我从gatsby-config.js 记录DEPLOY_ENV 时,它被设置为staging,但是,当我在src/html.js 中记录process.env 时,ASSET_HOST 被设置为我的.env.production 文件中的那个,所以当我部署到登台时,它会使用我的生产主机中的资产。

【问题讨论】:

  • 你解决了吗?

标签: reactjs environment-variables gatsby


【解决方案1】:

我认为DEPLOY_ENV(如NODE_ENV)是一个保留的环境变量。这就是为什么 DEPLOY_ENV=staging 不适用于您的情况。

Gatsby docs on environment variables 建议使用辅助环境变量来获得额外的环境支持。

您可以在根文件夹中添加一个.env.staging 文件,并在其中放置您的ASSET_HOST 环境变量。

然后使用ACTIVE_ENV=staging gatsby develop 运行 gatsby

【讨论】:

  • 是什么让您认为它是保留字?此外,OP 询问如何运行 gatsby build 而不是开发
  • @Dejell 您可能是正确的保留字。我的回答是一年前做出的,老实说,我不记得为什么我今天这么说。但是,我链接的文档已经很详细了,您阅读了吗? (完整页面)
猜你喜欢
  • 2018-04-15
  • 2019-04-04
  • 2018-07-20
  • 1970-01-01
  • 2017-01-13
  • 2020-07-29
  • 2018-03-05
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多