Ejs 不渲染 ejs 文件

发布于 2025-01-12 21:09:44 字数 1874 浏览 2 评论 0原文

我想制作一个队列系统来创建pdf文件。我创建了一个节点服务器并使用 Express 框架。我还使用rabbitmq作为队列系统。我设置视图引擎 ejs

app.set('view engine', 'ejs');
app.use(Express.static(__dirname + "/views"));

我的文件夹结构是

consumers
   --consumer_report.js
views
   report.ejs
   report
       --environment.ejs
       --consultans.ejs
       --map.ejs

当用户想要创建 pdf 时,我将其重定向到队列。队列正在计算一些数据。计算后我使用渲染 ejs 文件。

createReport(msg.user, msg.reportID, msg.type, msg.packetName, (err, data) => {
    data.packet = msg.packetName;

    let dirUrl = __dirname + "/../views/report.ejs";
    let opts = {
        async: true
    }

    ejs.renderFile(dirUrl, data, opts, (err, html) => {
        if (err) return console.error(err);
        console.log("html", html);
    });
});

报告 Ejs

<!DOCTYPE html>
<html lang="en" style="zoom:0.75;">
<head>
    <meta charset="UTF-8">
    <title>Report</title>
    <link rel="stylesheet" href="<%= host %>/css/rp.css">
    <script src="<%= host %>/js/jquery3.2.1.min.js"></script>
    <script src="<%= host %>/js/highcharts.js"></script>
    <script src="<%= host %>/js/rp.js"></script>
</head>
<body>
<% for(let i of index){brackets = i.i_page; title= i.name %>
<% if(brackets=="environment") {%> <%- include report/environment.ejs %> <% } %>
<% if(brackets=="consultant") {%> <%- include report/consultants.ejs %> <% } %>
<% if(brackets=="map") {%> <%- include report/map.ejs %> <% } %>
<% } %>
</body>
</html>

渲染 ejs 文件时出现此错误

编译 ejs 时 /home/aaa/Desktop/projects/report/consumers/../views/report.ejs 中的参数列表后出现错误语法错误:缺少 )

我找不到错误。我的错误在哪里?

I want to make a queue system for to create pdf file. I created a node server and used Express framework. Also I used rabbitmq for the queue system. I set view engine ejs

app.set('view engine', 'ejs');
app.use(Express.static(__dirname + "/views"));

My folder structure is

consumers
   --consumer_report.js
views
   report.ejs
   report
       --environment.ejs
       --consultans.ejs
       --map.ejs

When a user wants to create a pdf, I redirect it to the queue. The queue is calculating some datas. After calculating I'm using render ejs file.

createReport(msg.user, msg.reportID, msg.type, msg.packetName, (err, data) => {
    data.packet = msg.packetName;

    let dirUrl = __dirname + "/../views/report.ejs";
    let opts = {
        async: true
    }

    ejs.renderFile(dirUrl, data, opts, (err, html) => {
        if (err) return console.error(err);
        console.log("html", html);
    });
});

Report Ejs

<!DOCTYPE html>
<html lang="en" style="zoom:0.75;">
<head>
    <meta charset="UTF-8">
    <title>Report</title>
    <link rel="stylesheet" href="<%= host %>/css/rp.css">
    <script src="<%= host %>/js/jquery3.2.1.min.js"></script>
    <script src="<%= host %>/js/highcharts.js"></script>
    <script src="<%= host %>/js/rp.js"></script>
</head>
<body>
<% for(let i of index){brackets = i.i_page; title= i.name %>
<% if(brackets=="environment") {%> <%- include report/environment.ejs %> <% } %>
<% if(brackets=="consultant") {%> <%- include report/consultants.ejs %> <% } %>
<% if(brackets=="map") {%> <%- include report/map.ejs %> <% } %>
<% } %>
</body>
</html>

When render the ejs file I get this error

Error SyntaxError: missing ) after argument list in /home/aaa/Desktop/projects/report/consumers/../views/report.ejs while compiling ejs

I couldn't find the error. Where is my mistake?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

孤檠 2025-01-19 21:09:44

您需要根据文档将包含语法更改为 include(path)

注意:包含预处理器指令 (<% include user/show %>) 是
v3.0+ 不支持。
https://github.com/mde/ejs

试试这个:

<!DOCTYPE html>
<html lang="en" style="zoom:0.75;">
<head>
    <meta charset="UTF-8">
    <title>Report</title>
    <link rel="stylesheet" href="<%= host %>/css/rp.css">
    <script src="<%= host %>/js/jquery3.2.1.min.js"></script>
    <script src="<%= host %>/js/highcharts.js"></script>
    <script src="<%= host %>/js/rp.js"></script>
</head>
<body>
<% for(let i of index){brackets = i.i_page; title= i.name %>
<% if(brackets=="environment") {%> <%- include('report/environment.ejs') %> <% } %>
<% if(brackets=="consultant") {%> <%- include('report/consultants.ejs') %> <% } %>
<% if(brackets=="map") {%> <%- include('report/map.ejs') %> <% } %>
<% } %>
</body>
</html>

you need to change include syntax to include(path), as per docs:

NOTE: Include preprocessor directives (<% include user/show %>) are
not supported in v3.0+.
https://github.com/mde/ejs

try this:

<!DOCTYPE html>
<html lang="en" style="zoom:0.75;">
<head>
    <meta charset="UTF-8">
    <title>Report</title>
    <link rel="stylesheet" href="<%= host %>/css/rp.css">
    <script src="<%= host %>/js/jquery3.2.1.min.js"></script>
    <script src="<%= host %>/js/highcharts.js"></script>
    <script src="<%= host %>/js/rp.js"></script>
</head>
<body>
<% for(let i of index){brackets = i.i_page; title= i.name %>
<% if(brackets=="environment") {%> <%- include('report/environment.ejs') %> <% } %>
<% if(brackets=="consultant") {%> <%- include('report/consultants.ejs') %> <% } %>
<% if(brackets=="map") {%> <%- include('report/map.ejs') %> <% } %>
<% } %>
</body>
</html>
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文