从浏览器 JavaScript 中调用节点 'require' 函数

Call Node 'require' function from within browser JavaScript

one page of a Squarespace website,我需要从页面 JavaScript 中调用 Node js 'require' 函数。我在本地处理一个最小测试用例。节点已安装。

相关代码为:

require('dotenv').config();
AWS.config.update({
  'region': process.env.AWS_REGION,
  'accessKeyId' : process.env.ACCESS_KEY_ID,
  'secretAccessKey' : process.env.SECRET_ACCESS_KEY,
  'endpoint' : process.env.ENDPOINT
});

'secret' ID 和键值将存储在一个隐藏的环境变量 .env 中,而不是在页面上。

单独使用这段代码,我得到了一个要求未定义的错误。我需要必要的代码才能在 JavaScript.

中识别 Node 函数

我在这里看到的问题是相反的,让 JavaScript 函数在 Node 中被识别,但是 none 这种方式。在这些答案中,我没有看到任何可以使用的东西。我也在网上搜了下,不过大部分回复都是这里的问题

我将从我的评论中总结几个相关点:

  1. 首先,了解浏览器中的 运行ning 代码与您自己的 nodejs 服务器中的 运行ning 代码之间的区别以及活动类型非常重要每个都适合。

  2. 您不能 运行 在浏览器中编写 nodejs 代码。虽然浏览器和 nodejs 都可以 运行 vanilla Javascript 代码,但整个 nodejs 运行-time 库只能在 nodejs 环境中使用,不能在浏览器中使用。同样,在浏览器环境中有许多可用的东西,例如 DOM。因此,像 require()dotenv 模块完全被设计为 运行 在 nodejs 环境(通常是服务器)中,而不是在浏览器中。有一些第三方模块可以在任一环境中 运行(例如用于从其他服务器发出 http 请求的 Axios)。

  3. 您在浏览器中嵌入客户端 Javascript 的任何内容都是安全的。任何黑客或开发人员都可以使用它。因此,您绝对不想将 AWS 凭证放入网页中。

  4. 当使用凭据(例如您的 AWS 凭据)或访问数据库(例如您的 DynamoDB)时,您不希望直接从浏览器访问它们。为此,您会将您的凭据直接嵌入到网页中,这将使任何黑客能够完全访问您的数据库,在那里他们可以造成各种破坏。

  5. 相反,您将需要设置自己的服务器来管理您的 AWS 凭据并控制数据库中修改和不修改的内容。通过这种方式,您可以确保您的凭据在您的服务器上安全(永远不要将它们放在客户端中)并且您的 nodejs 服务器能够决定对数据库进行哪些更改是合适的,哪些不是。

  6. 然后,如果你想从客户端对数据库进行一些更改(添加、修改、删除),你从浏览器网页向你的nodejs发送一个Ajax调用服务器指定要更改的内容。您的 nodejs 服务器验证请求(确保这是一件合理的事情,检查发出请求的用户是否有权这样做),然后您的 nodejs 服务器可以使用您的 AWS 凭证登录数据库并进行适当的更改数据库。

  7. 如果客户端想要返回结果,那么您的服务器可以发回适当的结果。