我们可以使用名为 _MY_SECRET 的环境变量吗?

Can we use an env variable named _MY_SECRET?

我正在尝试在 Nuxt.js 中的 serverMiddleware 中使用环境变量。它以字母 (MY_SECRET) 开头时工作正常,但由于它是一个私有服务器变量,我希望它以下划线 (_MY_SECRET) 开头。但是由于某种原因,后者未定义。

这是我的基本设置:

// .env

MY_SECRET = hello
_MY_SECRET = world
// serverMiddleware/index.js

console.log(process.env.MY_SECRET, process.env._MY_SECRET) // output: hello undefined

为什么会发生这种情况,还有哪些其他选项可以为我的私有变量添加前缀?

Nvm,您不能在 serverMiddleware 中使用 runtimeConfig(可能是因为它不在 Nuxt 上下文中),如下所示:https://github.com/nuxt/nuxt.js/issues/2033#issuecomment-773181809

我自己用下划线试了一下,用 publicRuntimeConfig 效果很好。


经过一些研究 this answer 和阅读官方规范,在一些维基百科之上,看起来 _ 是一个有效的环境字符。同时,它也被用作分隔符。

我试了好几样东西,发现如果你给它加上前缀 _,你甚至不会在 process.env 中有它,这也不是 dotenv 问题(已检查)这个也是),所以我猜这是不可能的。

解决方案

使用PRIVATE_MY_SECRET,你应该很好!