NodeJS 如何在ejs脚本代码中使用节点全局变量?

gab6jxml  于 2023-01-20  发布在  Node.js
关注(0)|答案(1)|浏览(232)

我刚开始接触ejs和node-js,我启动了一个node项目,并在根目录下的主index.js文件中定义了一些全局变量,如下所示:

global.urlBack = "http://localhost:3300";
global.urlFront = "http://localhost:8080";
...

之后,在/views/index.ejs目录中,我有一个代码如下:
x一个一个一个一个x一个一个二个x
这个requestUrl变量是我通过一个快速路由传递的,就像下面这样:

resp.render("index", {
      amountData: amountData,
      emailData: emailData,
      requestUrl: urlBack
    });

它可以在ejs文件的html部分中识别,但在js部分中不能识别。我如何在我的"codes.js"文件中访问该全局变量的值?

u1ehiz5o

u1ehiz5o1#

实际上,我找不到任何解决方案,可以在ejs文件中使用的codes.js文件中使用index.js主文件中定义的全局变量,但我决定在public directory(ejs文件所在的同一文件夹)上名为“config.json”的文件中设置全局变量,并在**“codes.js”和main“index.js”**中使用它们,如下所示:
config.json:

{
    "request": "url of request",
    "front": "http://localhost:8080",
    "back": "http://localhost:3300",
    ....
}

然后在**“index.js”**文件中:

const fs = require('fs');
const config = JSON.parse(fs.readFileSync(path.join(__dirname, 'public/config.json'), 'utf8'));
console.log(config.request);

global.configVar = config;

....

在我现在使用<script type="module" src="../static/codes.js"></script>的“codes.js”中,我导入了相同的json文件,如下所示:

import myJson from './config.json' assert {type: 'json'};
console.log(myJson.request);
....

这样我就可以在两个地方使用我的全局变量,但是我的方法(importAssert)的问题是(如果我没有错的话)只有Chrome浏览器支持。
所以,如果有人能帮我找到一个解决方案,在所有的浏览器,请张贴在这个问题的另一个答案。谢谢。

相关问题