我正在将 next.js 12 与 React 应用程序一起使用。
我有以下 .env.local 文件:
NEXT_PUBLIC_DEVELOPMENT_ENV_VARIABLE="public_development_variable"
我启动开发服务器并在浏览器中启动:
console.log('###ENV', process.env)
并且我总是未定义。
在日志中,我有以下内容可以确认 env 文件已被读取:
info - Loaded env from /Users/testdash/.env.local
但 process.env 始终为空
我正在使用next-auth需要使用环境变量的库,如下所示:
Providers.GitHub({
clientId: process.env.GITHUB_ID,
clientSecret: process.env.GITHUB_SECRET,
}),
Run Code Online (Sandbox Code Playgroud)
然而,当我测试时next-auth它不起作用,在我看来原因是因为这些变量没有正确加载。因此,我做了一些测试,看看我是否可以访问我的应用程序中的环境变量,但测试表明我不能。
测试是这样进行的:
// .env.local (root level)
NEXT_PUBLIC_ENV_LOCAL_VARIABLE="public_variable_from_env_local"
Run Code Online (Sandbox Code Playgroud)
然后我将以下代码添加到我的网站:
<h2>test one start</h2>
{process.env.NEXT_PUBLIC_TEST_ONE}
<h2>test one end</h2>
<Spacer />
<h2>test two start</h2>
{process.env.TEST_TWO}
<h2>test two end</h2>
Run Code Online (Sandbox Code Playgroud)
在这种情况下,test one start显示并test one end显示,但环境变量不显示。test two start对于和也是如此test two end。
我用 console.log 做了类似的测试 - 即:
console.log("test one", process.env.NEXT_PUBLIC_TEST_ONE)
console.log("test two", process.env.TEST_TWO)
Run Code Online (Sandbox Code Playgroud)
结果如下:
test one undefined
test two undefined
Run Code Online (Sandbox Code Playgroud)
简而言之,无论出于何种原因,我似乎无法在我的 nextjs 应用程序中加载环境变量。不是来自next-auth,不是在代码中,也不是在 console.log 中。变量未定义,我不知道为什么。
有任何想法吗?
谢谢。