【发布时间】:2020-05-29 15:52:48
【问题描述】:
我有一个views文件夹结构和一个像这样的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') 包含在控制器中并渲染 fs:fs
【问题讨论】:
-
您不能只检查控制器中该文件的存在吗?它必须在 ejs 文件中吗?
-
...是的,您是对的...最初并没有想到这一点。谢谢!
-
你真的不应该在服务器中使用
fs.existsSync()。它会破坏你的可扩展性,因为它会阻塞一个 Javascript 线程。您可以在调用res.render()之前使用异步 I/O 测试是否存在并将布尔值传递给模板,模板可以使用该布尔值。 -
@jfriend00 ...感谢您的提示! ...我做了相应的调整!
标签: javascript node.js express ejs