繁体   English   中英

Static 网站访问环境变量:“process is not defined”

[英]Static website access of environmental variable: "process is not defined"

我有一个通过 11ty(基于节点的 SSG)开发的 static 网站,其中包含一个联系表单,该表单向带有数据的 nodemailer API 发送请求。 两者都托管在 Render 上,分别作为 Static 网站和 Web 服务,它们共享一个基本的身份验证密码,我将其作为环境变量存储在每个项目中。

Web 服务可以很好地访问变量。 但是,static 网站的事件向我展示了标题“process”未定义的错误,如“process.env.VARIABLE_NAME”,这是我访问它们的方式。 我尝试在项目中包含一个具有相同密钥的 secret.env 文件,并在项目中包含 dotenv,但没有改变。

我假设 static 站点的性质正在使其成为环境变量,因此不会以某种方式处理/应用环境变量。 我可能在这里缺少哪些可能的步骤?

编辑:虽然我似乎可以通过命令行 arguments(然后在构建过程中将其注入代码)之类的方法来执行此操作,但这对我来说不起作用,因为密码必须是秘密的在生成的源文件中。 dotenv package 在我的案例中不起作用。 最后,我选择放弃这种基于密码的身份验证,而只是使用蜜罐字段来防止垃圾邮件,并使用 API 中的 CORS Origin 标头来控制请求源。

您的 static 站点运行在与您的 web 服务(充当服务器)不同的上下文中。 由于您的 static 站点是从用户浏览器运行的,因此它不了解特定于节点的功能,例如加载文件或访问您的进程环境。

将您的密码添加到您的 static 网站也会带来安全风险,因为用户可以看到您的密码,获取它并运行他们自己的请求,而您的网站可能没有任何安全措施。

通常的方法是创建一个您自己的 API,它接收来自您的 static 站点的请求并直接与 API 对话,或者创建一个将页面呈现到服务器的技术堆栈(如 ServerSideRendering)。 这样,您的系统会在您的用户请求受到限制时负责调用 API。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM