【问题标题】:How to use environmental variables in a static Netlify page如何在静态 Netlify 页面中使用环境变量
【发布时间】:2020-04-20 21:28:41
【问题描述】:

所以我有一个使用一些 API 的静态网页。有一个 app.js 文件,其中包含存储在对象属性中的 API 密钥。我需要使用 Netlify dev 隐藏它。我怎么做?如何在原生 js 中使用 Netlify 开发工具?我很可能也需要安装 node js,但这个主题对我来说并不完全清楚......有人可以为我制作一个分步教程吗?

【问题讨论】:

    标签: javascript node.js frontend netlify netlify-cms


    【解决方案1】:

    如果是静态站点,将无法直接访问隐藏的 netlify 环境变量。 如果您将app.js 文件与您的静态站点一起托管,那么其他人很容易浏览到它并查看您试图隐藏的 API 密钥。

    一个解决方案是定义一个Netlify Function 来执行 API 调用,然后静态站点中的 JS 可以调用该函数。 您的 Netlify 函数将有效地成为您应用的后端,并且可以通过 process.env 访问您在 Netlify UI 中设置的 ENV 变量。

    请参阅此tutorial 以获取分步指南。


    更新 cmets 中新的 gatsby-build 信息。

    您可以将变量放在 git 忽略的 .env 文件中,这意味着它们不会最终出现在 git 上,但仍会被拉入并包含在客户端可见的 gatsby 生产代码中,所以不建议用于 API 访问密钥。理想情况下,您应该通过后端连接以保护这些密钥,如上述原始答案所示。

    但是,如果您使用的是 Netlify Dev CLI,而不是使用 .env 文件,那么这将自动下拉您在在线 Netlify 设置中设置的任何 env vars,并允许您在本地环境中使用它们。

    来自cli docs

    Netlify Dev 将您的 Netlify 生产环境的功能直接带到您的本地机器上。这包括自定义标头/重定向和环境变量

    【讨论】:

    • 嗨卢克,就我而言,我需要在前端使用环境变量(Gatsby.js),我可以在 gatsby-browser.js 中使用它们,但不能在我自己创建的 js 文件中执行相同的操作。你能帮忙吗? stackoverflow.com/questions/63611042/…
    • 你检查过编译的 gatsby 输出吗? Gatsby 有可能实际上只是将您的本地环境变量拉入源代码,然后部署,而不是在运行时实际使用 netlify 的环境变量。
    • 我认为 .env.env.development 用于 Gatsby 和 Netlify cms。 Netlify 的环境变量在哪里?我知道 Netlify 的设置中有设置,但那是用于生产的。对于本地开发,你打算如何使用 Netlify 的 env vars?
    猜你喜欢
    • 1970-01-01
    • 2018-12-15
    • 2020-08-28
    • 1970-01-01
    • 2020-11-04
    • 1970-01-01
    • 2021-04-21
    • 1970-01-01
    相关资源
    最近更新 更多