繁体   English   中英

通过 Express 在提供的 HTML 页面中设置动态 URL

[英]Set Dynamic URL in served HTML page by Express

我在 docker 容器内运行 Express API,我的其中一个路由为用户提供一个 HTML 页面。

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

});

这个页面有它的javascript代码,这段代码调用express API来获取数据。 我在 JS 中设置快速服务器 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 主机是为该页面提供服务的同一台服务器。

任何帮助表示赞赏。

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

要实现您的目标:

  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包来读取环境变量。

不要犹豫,提出任何问题

暂无
暂无

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

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