一些应该解决您的问题的步骤和注释:
console.log(process.env)
将始终打印空对象
要查看它是否确实有效,您应该直接打印变量,例如
console.log(process.env.API_URL)。
确保.env。*在您的根文件夹中
换句话说,您的文件夹层次结构应类似于:
.env.development.env.productionsrc/ pages/ index.js
如果要访问服务器端的环境变量,则无需前缀GATSBY_
从文档:
除了.env。*文件中定义的这些项目环境变量之外,您还可以定义OS Env Vars。带有GATSBY_前缀的OS Env
Vars将在浏览器Javascript中可用。
如果要在浏览器端使用它们,则需要GATSBY_ *前缀
仅当使用OS Env Vars方法时才使用前缀(即,直接在服务器上而不是在这些.env文件中设置它们)。
gatsby develop
添加.env文件后,杀死并重新启动
在CodeSandbox上进行复制时,我遇到了这个问题(在CodeSandbox中,您可以通过转到左侧的“服务器控制面板”并单击“重新启动沙箱”来进行重新启动)。
这是工作示例:https :
//presandbox.io/s/jj8xzn2y15



