javascript 找不到包含文件

4dc9hkyq  于 2023-04-28  发布在  Java
关注(0)|答案(9)|浏览(120)

我在运行一个简单的服务器

var express = require('express')
var app = express()

app.set('view engine', 'ejs'); 
app.use(express.static('public')) 

// home page request handler
app.get('/', function (req, res) {

    res.render('home')
})

// initializes request listener
app.listen(process.env.PORT, process.env.IP, function(){
    console.log("Server is listening");
})

当我对主页发出GET请求时,运行时抛出以下错误

Error: Could not find include include file.
    at getIncludePath (/home/ubuntu/workspace/node_modules/ejs/lib/ejs.js:152:13)
    at includeSource (/home/ubuntu/workspace/node_modules/ejs/lib/ejs.js:276:17)
    at /home/ubuntu/workspace/node_modules/ejs/lib/ejs.js:629:26
    at Array.forEach (native)
    at Object.generateSource (/home/ubuntu/workspace/node_modules/ejs/lib/ejs.js:605:15)
    at Object.compile (/home/ubuntu/workspace/node_modules/ejs/lib/ejs.js:509:12)
    at Object.compile (/home/ubuntu/workspace/node_modules/ejs/lib/ejs.js:358:16)
    at handleCache (/home/ubuntu/workspace/node_modules/ejs/lib/ejs.js:201:18)
    at tryHandleCache (/home/ubuntu/workspace/node_modules/ejs/lib/ejs.js:223:14)
    at View.exports.renderFile [as engine] (/home/ubuntu/workspace/node_modules/ejs/lib/ejs.js:437:10)

我不明白这个错误。有什么想法吗?我在云9工作。
我的目录结构是

v1.1
  +---views
  |     +---- home.ejs
  |     +---- partials
  |               +------ header.ejs
  |               +------ footer.ejs
  |
  +----app.js

home.ejs

<% include header %>
<h1>welcome</h1>
<% include footer %>

header.ejs

<DOCTYPE! html>
    <html>
        <head>
            <title>
                <link rel="stylesheet" hreff="app.css">
            </title>
        </head>
    <body>

footer.ejs

</body
</html>
6l7fqoea

6l7fqoea1#

包含路径是相对的,你需要更新你的路径,以包含“partials”子文件夹e。g的。

<% include partials/header %>
<h1>welcome</h1>
<% include partials/footer %>

见文档

xtfmy6hx

xtfmy6hx2#

试试这些:

<% include header.ejs %>
<% include header %>
<%- include('header.ejs'); -%>
<%- include('./header.ejs'); -%>
siv3szwd

siv3szwd3#

对我来说,我必须设置根参数,

ejs.render(
  html,
  {},
  {
    root: process.cwd(),
  }
)

然后用它像,

<%- include('/footer/index.ejs'); %>
xoshrz7s

xoshrz7s4#

试试这个:

<% include header %>

    <h1>welcome</h1>

<% include footer%>
pxq42qpu

pxq42qpu5#

  1. VS代码
    1.左侧文件资源管理器
    1.右键单击'。ejs文件
    1.点击“复制路径”
    1.然后粘贴该路径
<%- include('YOUR_PATH/GOES_HERE') %>

在我的情况下,操作系统Ubuntu,路径是这样的

<%- include('/media/username/diskname/foldername/nodejsApp/views/body/header.ejs') %>

编辑

我在写答案时忘记了'%'。

8oomwypt

8oomwypt6#

〈%- include('不添加的文件名。js')%〉
先决条件:确保文件名与上面声明的名称相关。即(Header不等于header。)

eoigrqb6

eoigrqb67#

不要把扩展名放在文件名后面。例如,执行以下操作:

include("file", { item: 123})

不是这个:

include("file.ejs", { item: 123})

如果在一个循环中有多个包含,不要将整个循环放在一个<% %>块中。将开始和结束放在它们自己的<% %>中,将包含放在<%- %>标记中。它不能只使用<% %>标签,你需要使用<%- %>

<% for(const item of items) { %>
    <%- include("file", { item: 123}) %>
<% } %>
w6lpcovy

w6lpcovy8#

我也遇到了这个问题,但我添加了文件扩展名,它确实为我工作。尝试以下方法:

<%- include('header.ejs'); -%>

<%- include('footer.ejs'); -%>
ss2ws0br

ss2ws0br9#

面临相同问题,通过以下方式解决

<%- include('header.ejs');-%>
   <h1>Home</h1>
   <p><%=startingContent%></p>
<%- include('footer.ejs');-%>

相关问题