gpt4 book ai didi

environment-variables - 上传到 Zeit/Now 时客户端中暴露的 Nuxt 环境变量

转载 作者:行者123 更新时间:2023-12-03 14:38:45 25 4
gpt4 key购买 nike

我正在使用 Zeit/Now 部署 Nuxt 应用程序。在开发阶段,我使用了 .env文件将 secret 存储到我的 Contentful CMS,将 secret 公开给 process.env使用 nuxt-dotenv 包。为此,在 nuxt.config 的顶部,我调用了 require('dotenv').config() .

然后我用 Zeit/Now 存储了这些 secret ,并创建了一个 now.json 来为构建和运行时设置它们,如下所示:

{
"env": {
"DEMO_ID": "@demo_id"
},
"build": {
"env": {
"DEMO_ID": "@demo_id"
}
}
}

使用该设置,构建仅适用于索引页面,所有 Javascript 都不起作用。只有当我将 env-property 添加到 nuxt.config.js 时文件,应用程序开始在 Zeit 服务器上正常工作。
require('dotenv').config()

export default {
...
env: {
DEMO_ID: process.env.DEMO_ID
},
...
modules: [
'@nuxtjs/dotenv'
],
...
}

但是:当我检查上传的 Javascript 文件时,我的 secret 被暴露了,这显然是我不想要的。

我在这里做错了什么?谢谢你的帮助。

最佳答案

你不一定在这里做错了什么,这就是 Nuxtjs 的工作原理。
env 中声明的变量属性用于替换 process.env.MY_ENV 的实例,但因为 Nuxt 是同构的,这可以在服务器和 客户 .
如果您希望这些 secret 只能在服务器上访问,那么解决此问题的最简单方法是使用 serverMiddleware .

As serverMiddleware is decoupled from the main Nuxt build, env variables defined in nuxt.config.js are not available there.


这意味着您的正常 ENV 变量应该是可访问的,因为服务器中间件在 Node.js 上运行。
显然,这意味着这些 secret 将无法在客户端使用,但是如果您有像 Stripe key 这样的东西需要使用它来发出后端请求,那么这会起作用。

关于environment-variables - 上传到 Zeit/Now 时客户端中暴露的 Nuxt 环境变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58319334/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com