首页 > 解决方案 > 通过 Express 在提供的 HTML 页面中设置动态 URL

问题描述

我在 docker 容器中运行 Express API,我的一条路线为用户提供 HTML 页面。

app.get('/trilateration/', function(req,res){
    res.sendFile(path.join( __dirname,'trilateration','/Trilateration.html'));

});

这个页面有它的javascript代码,这个代码调用express API来获取数据。我在 JS 中设置 express server api,如下所示:

var serverHost='http://rtlsdatabase:3014'
var urlpos =  serverHost + "/pos/";
var urlrpi = serverHost + "/rpi/";
var urltooling = serverHost + "/tooling/";
var urlBlueprint = serverHost + "/blueprint/";
var urlDimensions = serverHost + "/dimensions/"

我使用 .env 文件将变量传递给 docker 容器并将其与 Express 一起使用,但 HTML 页面和 javascript 代码无法使用它。

如何将服务器 URL 动态传递给这个“serverHost”变量?我想在 .env 文件中设置它,甚至以另一种方式获取它,因为 url 主机是为该页面提供服务的同一台服务器。

任何帮助表示赞赏。

标签: javascripthtmldockerexpress

解决方案


您无法从浏览器/客户端环境访问服务器环境变量。

实现您的目标:

  1. 浏览器/客户端必须向服务器发出 GET 请求才能获得该值。HTML 中的 javascript 代码可以使用fetch发出请求,如下所示的示例代码:
fetch('http://url-to-express-server/data')
  .then(res => res.json())
  // the data here is the value sent from the server
  .then((data => console.log(data))
  1. 快速服务器必须公开一个端点,该端点从其环境变量中返回数据片段。下面的示例代码将端点定义为,/data但它可以是任何描述性的。
app.get('/data', (req, res) => res.json(process.env.serverHost));

注意:确保您的 env 文件中有该环境变量,并且您正在使用dotenv包来读取环境变量。

不要犹豫,问任何问题


推荐阅读