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