无法访问 NextJS GraphQL 中的 .env 变量

Not able to access .env variables in NextJS GraphQL

提问人:Gagan 提问时间:11/9/2023 更新时间:11/9/2023 访问量:34

问:

首先,让我告诉大家,我已经尝试了所有的堆栈溢出解决方案,但在我的情况下没有一个有效,我正在使用新版本的 NextJS(版本 14),所以我在完成所有旧问题后发布这个问题,所以不要将其标记为重复。

好的,来到主要问题,

我的问题是我在我的 NextJS 应用程序中使用 Apollo 客户端 (GraphQL),我想使用 .env(甚至 .env.development / .env.production / .env.local ,任何有效的东西)根据(NODE_ENV)环境更改 Apollo 客户端的 URI。

但是我无法做到这一点,process.env 的控制台何时只是在浏览器控制台中获取一个空对象,但我在我的 VS code 控制台中获取了所有内容,如下所示:

enter image description here

我的 .env 文件和 .env.local 文件:-

enter image description here

下面是我的 Apollo 客户端的代码

import { ApolloClient, InMemoryCache } from "@apollo/client";

const CreateApolloClient = () => {
  console.log(process.env, "PROCESS");
  return new ApolloClient({
    uri: `http://localhost:4000/graphql`,
    cache: new InMemoryCache(),
  });
};

export default CreateApolloClient;

请帮助我解决上述问题,并随时询问您想知道的任何细节。

下一个.js graphql apollo-client .env

评论


答:

1赞 Igor Danchenko 11/9/2023 #1

要使环境变量在客户端上可用,您需要在它前面加上前缀NEXT_PUBLIC_

https://nextjs.org/docs/pages/building-your-application/configuring/environment-variables#bundling-environment-variables-for-the-browser

评论

0赞 Gagan 11/10/2023
即使这样在浏览器控制台中获取空对象也不起作用。
0赞 Igor Danchenko 11/10/2023
嗯,这听起来不对。请随时分享最小的复制品。
0赞 Igor Danchenko 11/10/2023
尝试,而不仅仅是console.log(process.env.NEXT_PUBLIC_YOUR_VARIABLE)console.log(process.env)
0赞 Gagan 11/10/2023
实际上它现在可以工作了,我无法在我的浏览器中看到,但在我的 VS Code 控制台中我能够看到,并且现在正在向后端服务器发出请求。谢谢伊戈尔·丹琴科。console.log(process.env.NEXT_PUBLIC_YOUR_VARIABLE)