gpt4 book ai didi

reactjs - 客户端无法访问gatsby环境变量

转载 作者:行者123 更新时间:2023-12-03 13:28:19 24 4
gpt4 key购买 nike

我设置了 .env 文件和 gatsby-config.js,如下所示。

// .env.development
GATSBY_API_URL=https://example.com/api
// gatsby-config.js
console.log(process.env)
...
...

尽管何时运行 gatsbydevelop,它会显示所有环境变量,包括 GATSBY_API_URL: 'https://example.com/api',但浏览器上没有环境变量。

// client side
console.log(process.env) // => this will return {} empty object

我想我关注了https://www.gatsbyjs.org/docs/environment-variables/正如它所说,并向变量添加了 GATSBY_ 前缀。

我在客户端看不到环境变量有什么原因吗?

gatsby info --clipboard

System:
OS: macOS Sierra 10.12.6
CPU: (4) x64 Intel(R) Core(TM) i5-4258U CPU @ 2.40GHz
Shell: 5.2 - /bin/zsh
Binaries:
Node: 11.2.0 - /usr/local/bin/node
Yarn: 1.9.4 - /usr/local/bin/yarn
npm: 6.4.1 - /usr/local/bin/npm
Browsers:
Chrome: 70.0.3538.110
Firefox: 63.0.3
Safari: 12.0.2
npmPackages:
gatsby: ^2.0.61 => 2.0.61
gatsby-image: ^2.0.22 => 2.0.22
gatsby-plugin-google-analytics: ^2.0.8 => 2.0.8
gatsby-plugin-manifest: ^2.0.11 => 2.0.11
gatsby-plugin-no-sourcemaps: ^2.0.1 => 2.0.1
gatsby-plugin-nprogress: ^2.0.7 => 2.0.7
gatsby-plugin-react-helmet: ^3.0.4 => 3.0.4
gatsby-plugin-sass: ^2.0.5 => 2.0.5
gatsby-plugin-sharp: ^2.0.14 => 2.0.14
gatsby-plugin-styled-components: ^3.0.4 => 3.0.4
gatsby-plugin-typescript: ^2.0.2 => 2.0.2
gatsby-plugin-typography: ^2.2.2 => 2.2.2
gatsby-plugin-webpack-bundle-analyzer: ^1.0.3 => 1.0.3
gatsby-source-filesystem: ^2.0.10 => 2.0.10
gatsby-transformer-sharp: ^2.1.9 => 2.1.9
gatsby-transformer-yaml: ^2.1.6 => 2.1.6
npmGlobalPackages:
gatsby-cli: 2.4.5

最佳答案

应该解决您的问题的几个步骤和注意事项:

console.log(process.env) 将始终打印空对象

要查看它是否真的有效,您应该直接打印变量,例如console.log(process.env.API_URL)

确保 .env.* 位于您的根文件夹中

换句话说,您的文件夹层次结构应该类似于:

.env.development
.env.production
src/
pages/
index.js

如果您想访问服务器端环境变量,则无需添加 GATSBY_ 前缀

来自文档:

In addition to these Project Environment Variables defined in .env.* files, you could also define OS Env Vars. OS Env Vars which are prefixed with GATSBY_ will become available in browser JavaScript.

如果您在浏览器端使用它们,则需要 GATSBY_* 前缀

仅当您使用操作系统环境变量方法时才需要添加前缀(即直接在服务器上设置它们而不是在这些 .env 文件中)。

添加 .env 文件后,终止并重新启动 gatsbydevelop

我在 CodeSandbox 上复制时遇到了这个问题(在 CodeSandbox 中,您可以通过转到左侧的“服务器控制面板”并单击“重新启动 Sandbox”来重新启动)。

这是工作示例:https://codesandbox.io/s/jj8xzn2y15

关于reactjs - 客户端无法访问gatsby环境变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53741674/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com