gpt4 book ai didi

javascript - node.js ejs - 如果文件不存在,则不渲染文件

转载 作者:太空宇宙 更新时间:2023-11-03 22:19:27 25 4
gpt4 key购买 nike

我有一个 View 文件夹结构和一个像这样的 ejs 文件 profile_60113.ejs

views
docs
profile_60113.ejs

我可以像这样动态渲染文件(其中 data.groupID == 60113):

<%- include("docs/profile_" + data.groupID); %>

但是我怎样才能首先检查文件是否存在呢?我试过这个:

<% if (fs.existsSync("views/docs/profile_" + data.groupID)) { %>
<%- include("docs/profile_" + data.groupID); %>
<% } %>

或者...

<% if (fs.existsSync("docs/profile_" + data.groupID)) { %>
<%- include("docs/profile_" + data.groupID); %>
<% } %>

但是没用...const fs = require('fs') 包含在 Controller 中并呈现 fs:fs

最佳答案

有效的方法是:

选项 1(同步):模板

服务器端:

const fs = require('fs');

var getGroupID = 60113;

res.render('docs', {
page: setPage,
data: {groupID: getGroupID},
fs: fs
});

模板:

<% if (fs.existsSync("views/docs/profile_" + data.groupID + ".ejs")) { %>
<%- include("docs/profile_" + data.groupID); %>
<% } %>

选项 2(同步):服务器端和模板

服务器端:

const fs = require('fs');

var getGroupID = 60113;

var getProfile;
if (fs.existsSync("views/docs/profile_" + getGroupID + ".ejs")) {
getProfile = true;
} else {
getProfile = false;
}

res.render('docs', {
page: setPage,
data: {groupID: getGroupID},
profile: getProfile
});

模板:

<% if (profile) { %>
<%- include("docs/profile_" + data.groupID); %>
<% } %>

选项 3(异步 I/O):服务器端和模板

服务器端:

...

var getProfile;
try {
await fs.promises.access("views/docs/profile_" + getGroupID + ".ejs");
getProfile = true;
} catch (error) {
console.log(error);
}

...

关于javascript - node.js ejs - 如果文件不存在,则不渲染文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60216306/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com