Express框架使用EJS的partials功能报ENOENT找不到文件错误如何解决
问题原因
- 核心错误出在EJS模板里的include路径写法:你写的
<%- include('/partials/navbar.ejs') %>开头带了斜杠/,在EJS的路径规则中,以/开头的路径会被识别为操作系统的绝对路径,直接从系统根目录(你这里是C盘根目录)查找文件,自然找不到存放在项目views目录下的partial组件。
解决方法
- 先确认你的项目目录结构符合以下规范:
你的项目根目录 ├── app.js(你的服务端js文件) └── views/ ├── home.ejs ├── subreddit.ejs ├── notfound.ejs └── partials/ └── navbar.ejs
- 修改模板中的include代码,去掉路径开头的斜杠,使用相对views目录的路径即可,以下两种写法都可以:
<%- include('partials/navbar.ejs') %> <!-- 也可以省略后缀,EJS会自动识别ejs文件 --> <%- include('partials/navbar') %>
额外优化建议
你当前模板的title标签里的变量输出漏了等号,不会正常渲染名称,修改为:
<title><%= name %></title>
内容的提问来源于stack exchange,提问作者Okta25
相关产品推荐
相关产品推荐

