gpt4 book ai didi

javascript - 云函数上传到github后隐藏了?

转载 作者:行者123 更新时间:2023-12-02 22:05:29 26 4
gpt4 key购买 nike

我已经下载了node.js,并在网站目录中创建了firebase-function 文件(firebase.json、functions 文件夹等)。如果我要在 project/functions/index.js 文件中编写 javascript 云函数,那么当我将其上传到我的静态网站的 Github 存储库时,它不会是私有(private)的。 (something.github.io)

那么,在不上传 index.js 的情况下,如何将我的 index.js 中的 firebase 云函数调用到我的静态网站(以保持某些函数的私有(private)性)?

编辑:我现在明白存在环境变量,但如何将其与带有 firebase Admin SDK 和云功能的 Github Pages 网站合并?

如何上传我的 GitHub Pages 项目并仍然将我的客户端链接到环境变量?我需要上传包含云函数的index.js吗?但上传index.js是否也达到了客户端看不到功能/数据的目的?

下面的评论提到了一个名为 Heroku 的软件,当我已经让 GitHub 和 firebase 与我的网站和数据库交互时,它的用途到底是什么?

我还看到了一种使用 dotenv 的方法,创建一个 .env 文件来放置 secret 数据(例如 API key )并使用 gitignore 来防止文件被上传?这是否能够在 Github Pages 上运行?如果可以,客户端是否能够看到 .env?如果不能,客户端-服务器网站是否可以将其链接到 .env,即使它没有推送到 Github

最佳答案

这是 environment variables 的一个很好的用途。本质上,假设您的 API key 为 12345。你有一个这样的函数:

async function fetchResults() {
await fetch("myapi.com/lookup?key=12345")
}

你可以这样做:

async function fetchResults() {
await fetch("myapi.com/lookup?key=${process.env.API_KEY}")
}

环境变量保存在您的计算机上,因此它永远不会发送到 GitHub,因此允许您将代码公开为开源,同时保持敏感 key 的 secret 性。

编辑:因此,我重新阅读了您的问题,发现您正在谈论发布到 GitHub 页面。需要注意的关键一点是,用户将能够看到托管在客户端的任何内容。 GitHub Pages 仅托管应用程序的“客户端”部分。因此,如果您的客户端(浏览器)网站对 myapi.com/lookup?key=12345 进行 API 调用,无论如何他们都能够看到它,因为这是他们的浏览器发出请求,并且他们可以看到他们的浏览器所做的任何事情。

但是,这里的最佳实践是编写服务器端代码来运行您的应用程序。为此,您可以使用我上面建议的方法,将环境变量添加到您用来托管的服务器(例如,您可以使用 [Zeit Now][2]Heroku 轻松完成此操作) 。这样,您可以共享您的代码,但您的环境变量在运行服务器端代码的计算机上保持 secret 。

关于javascript - 云函数上传到github后隐藏了?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59729913/

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