const hostname = "192.168.8.154";
const port = 3002;
app.use('*', function (req, res, next) {
db.collection('sys_params').find().toArray()
.then(sysParams => {
//console.log(sysParams);
app.locals.sysParams = sysParams;
app.locals.ipAddress = hostname;
app.locals.portNo = port;
app.locals.url = hostname + ':' + port;
})
.catch(error => console.error(error))
next()
})
在这里,我需要使用 EJS HTML 标记将硬编码的 IP 地址和端口替换为来自 ExpressJS 的 app.locals.url。
<body onload="landingPage('192.168.8.154:3002')">
用作
<body onload="landingPage(<% url%>)">
<script type="text/javascript">
function landingPage(ipAddress){
// Random Desktop image on-load
let loginDesktopArr = ["1-Sunday.jpg", "2-Monday.jpg", "3-Tuesday.jpg", "4-Wedsday.jpg", "5-Thursday.jpg", "6-Friday.jpg", "7-Saturday.jpg"];
let loginDesktopImg = loginDesktopArr[Math.floor(Math.random() * loginDesktopArr.length)];
let loginDesktopUrl = "'http://"+ipAddress+"/img/" + loginDesktopImg + "'";
document.getElementById('header').style = "background-image: url(" + loginDesktopUrl + ");";
}
</script>
在 JS 函数调用中使用 EJS 标签,我收到预期的错误 url is not Defined。
25| <title><%= __('LandingPageTabTitle') %></title>
26| </head>
>> 27| <body onload="landingPage(<% url%>)">
28|
29| <nav class="navbar navbar-fixed-top">
30|
url is not defined
将网址用单引号括起来
<body onload="landingPage('<%= url%>')">
Deberás 定义变量:
const url = app.locals.url