Nextjs v12.0.8 中未定义环境变量
Env vars are undefined in Nextjs v12.0.8
我创建了一个 .env.local 文件并尝试控制 process.env.TEST
(测试环境变量)但我得到 undefined
。似乎 process.env
总是空的。
我重新启动了服务器,但仍然看不到环境变量。我什至尝试开始一个新的空项目,但 process.env
仍然是空的。
我错过了什么吗?我看到的所有其他帖子似乎都已经弄明白了,但我还是做不到。
我的 .env.local 文件位于根级别。我还尝试用 NEXT_PUBLIC
附加 var,但这没有帮助。
按照惯例,React 环境变量必须以 REACT_APP_
为前缀才能与 process.env
一起使用。在 Next.js 的情况下,您可以将它们放在 .env.local
中,但它们 仅在 Node.js 环境中可用 。如果您需要使它们在浏览器中可用,则需要在它们前面加上 NEXT_PUBLIC_
前缀。
有关更多详细信息,请参阅 the documentation。
另一种方式(更老派 Next.js)是拥有一个 next.config.js
文件。
可能的配置是:
const conf = {
env: {
myVar: process.env.MY_VAR,
},
};
module.exports = conf;
然后您可以在代码中简单地使用 process.env.myVar
。有关详细信息,请参阅 this page。
我创建了一个 .env.local 文件并尝试控制 process.env.TEST
(测试环境变量)但我得到 undefined
。似乎 process.env
总是空的。
我重新启动了服务器,但仍然看不到环境变量。我什至尝试开始一个新的空项目,但 process.env
仍然是空的。
我错过了什么吗?我看到的所有其他帖子似乎都已经弄明白了,但我还是做不到。
我的 .env.local 文件位于根级别。我还尝试用 NEXT_PUBLIC
附加 var,但这没有帮助。
按照惯例,React 环境变量必须以 REACT_APP_
为前缀才能与 process.env
一起使用。在 Next.js 的情况下,您可以将它们放在 .env.local
中,但它们 仅在 Node.js 环境中可用 。如果您需要使它们在浏览器中可用,则需要在它们前面加上 NEXT_PUBLIC_
前缀。
有关更多详细信息,请参阅 the documentation。
另一种方式(更老派 Next.js)是拥有一个 next.config.js
文件。
可能的配置是:
const conf = {
env: {
myVar: process.env.MY_VAR,
},
};
module.exports = conf;
然后您可以在代码中简单地使用 process.env.myVar
。有关详细信息,请参阅 this page。