盖茨比 - 无法设置环境变量

时间:2018-05-04 15:59:47

标签: reactjs environment-variables gatsby

在我gatsby-config.js我使用dotenv包设置env vars

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文件中的一个,因此当我部署到暂存时,它会使用我的生产主机中的资源。

1 个答案:

答案 0 :(得分:0)

我认为DEPLOY_ENV(作为NODE_ENV)是一个保留的环境变量。这就是为什么DEPLOY_ENV=staging在您的情况下不起作用的原因。

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

您可以在根文件夹中添加.env.staging文件,放置ASSET_HOST env var。

然后使用ACTIVE_ENV=staging gatsby develop

运行gatsby