javascript - EJS 噩梦——无法包含外部 View

标签 javascript node.js ejs

似乎从来没有一种简单的方法可以在 EJS 中包含外部文件。

我的项目结构如下。如此简单却令人痛苦:

/lib/ejs-template.ejs

/views/home.ejs
/views/header.ejs

home.ejs 中我必须包含 header.ejs。我很幸运地关注他们的文档:https://ejs.co/#docs并以这种方式包含文件,因为“包含与包含调用的模板相关”,

<%- include("header") %>

ejs-template.ejs内,我正在像这样编译模板:

module.exports = (target, vars = {})=>{
    return Ejs.compile( Fs.readFileSync(`${__dirname}/../views/${target}.ejs`, {encoding: 'utf-8'}), {
        views: [ Path.resolve('../views') ],
    })(vars)
}

但是我收到了这个错误!

Error: ejs:38
    36| <body>
    37|
 >> 38| <%- include("header") %>
    39|
    40| <main class="container">
    41|     <h4>Some stuff</h4>

Could not find the include file "header"
    at getIncludePath ([redacted]\server\node_modules\ejs\lib\ejs.js:183:13)
    at includeFile ([redacted]\server\node_modules\ejs\lib\ejs.js:309:19)
    at include ([redacted]\server\node_modules\ejs\lib\ejs.js:690:16)
    at eval (eval at compile ([redacted]\server\node_modules\ejs\lib\ejs.js:662:12), <anonymous>:12:17)
    at anonymous ([redacted]\server\node_modules\ejs\lib\ejs.js:692:17)
    at module.exports ([redacted]\server\util\ejs-template.js:13:7)
    at [redacted]\server\route\site.js:13:18
    at Layer.handle [as handle_request] ([redacted]\server\node_modules\express\lib\router\layer.js:95:5)
    at next ([redacted]\server\node_modules\express\lib\router\route.js:137:13)
    at module.exports ([redacted]\server\middleware\isLoggedIn.js:8:9) {
  path: ''
}

我已在编译选项中设置 View 路径。我尝试过带/不带路径。我还尝试过将 root 设置为完全相同的 View 路径。

我错过了什么?该文档很松懈,没有提供任何相关线索。

最佳答案

似乎是路径问题。我必须这样设置:

views: [ Path.resolve(__dirname, '../views') ],

感谢https://github.com/mde/ejs/issues/594#issuecomment-812518617

关于javascript - EJS 噩梦——无法包含外部 View ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/66919161/

相关文章:

php - 联营公司如何跟踪购物车?

javascript - 我如何在使用 express 时访问表单中的 ejs 数据

javascript - 使用 jquery 动态构建 3d 圆柱体元素

node.js - Gulp - 将多个文件复制到单独的路径

python - 从pdf中提取数据的最佳方法是什么

node.js - npm 安装 mmmagic 失败

javascript - NODE.JS 和 EXPRESS 中的 URL 重定向处理程序

node.js - 使用nodejs和express将数据保存到mongodb数据库问题

javascript - 如何回调给定的函数

javascript - 如何替换 src 域名 tld