是否可以在 EJS 模板中使用 Process.env?



im 使用ejs模板引擎与node.js在后端和 我想在.env文件中保护我的谷歌地图 api 密钥,但我无法从 ejs 文件访问 .env 变量,例如:

<script
async
defer
src="https://maps.googleapis.com/maps/api/js?key=process.env.MAP_KEY&callback=initMap">
</script>

我也尝试了其他一些方法,例如:

<script
src="https:/...?key=%process.env.MAP_KEY%&callback=initMap">
</script>

还有

<script
src="https://...?key=[process.env.MAP_KEY]&callback=initMap">
</script>

如果有人在这里帮助我,我将非常有义务。谢谢!

是的,这是可能的。

在我的示例中,我假设您安装了 lib dotenv

在这里,我在渲染模板之前加载 env,放入 apikey 变量并将其传递给我的模板,在模板中,我用脚本插入apikey

路由/索引.js

require('dotenv').config()
var express = require('express');
var router = express.Router();
/* GET home page. */
router.get('/', function(req, res, next) {
res.render('index', { apikey : process.env.APIKEY });
});
module.exports = router;

views/index.ejs

<!DOCTYPE html>
<html>
<head>
<title>tests</title>
<style>
#map-canvas {
height: 700px;
width: 100%;
}
</style>
</head>
<body>
<h1>My map</h1>
<div id="map-canvas"></div>
</body>
<script>
showMap = function () {
const map = new google.maps.Map(document.getElementById('map-canvas'), {
center: { lat: -7.1297, lng: -34.8219 },
zoom: 10
});
}
</script>
<script async defer src="https://maps.googleapis.com/maps/api/js?key=<%=apikey%>&callback=showMap">
</script>
</html>

.env

APIKEY=#!#!#@!lakdkjlkdjlas

相关内容

  • 没有找到相关文章

最新更新