Не удалось найти включаемый файл

Я запускаю простой сервер

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)

Я не понимаю эту ошибку. Любые идеи? Я работаю в Cloud9.

Моя структура каталогов

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>

person the_prole    schedule 19.09.2017    source источник
comment
Вы запускали npm i ejs?   -  person zero298    schedule 20.09.2017
comment
@zero298 да, я побежал npm install ejs   -  person the_prole    schedule 20.09.2017
comment
У вас есть файл с именем home.ejs в каталоге с именем /views/?   -  person zero298    schedule 20.09.2017
comment
@zero298 да знаю   -  person the_prole    schedule 20.09.2017
comment
Как выглядит home.ejs? Ошибка указывает на проблему, включая частичный просмотр   -  person James    schedule 20.09.2017
comment
@James Я добавил файл, который вы просили   -  person the_prole    schedule 20.09.2017
comment
@ Кит, это решило, спасибо   -  person the_prole    schedule 20.09.2017
comment
Нет проблем, должен сказать, что ошибка ejs не очень полезна.. Включаемый файл мог бы помочь.. :) Также другие ребята помогли здесь, заставив вас показать больше деталей.   -  person Keith    schedule 20.09.2017


Ответы (4)


Пути включения являются относительными, вам нужно будет обновить свои пути, чтобы включить подпапку «partials», например.

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

См. документацию.

person James    schedule 19.09.2017

Попробуйте любой из них:

<% include header.ejs %>
<% include header %>
<%- include('header.ejs'); -%>
<%- include('./header.ejs'); -%>
person RGC_NGOLA    schedule 29.10.2020

Попробуйте это:

<% include header %>

    <h1>welcome</h1>

<% include footer%>
person Zahidul Haque    schedule 29.06.2020

  1. Код ВС
  2. Проводник слева
  3. Щелкните правой кнопкой мыши файл «.ejs».
  4. Нажмите «Копировать путь»
  5. Затем вставьте этот путь
<%- include('YOUR_PATH/GOES_HERE') %>

В моем случае ОС Ubuntu путь был таким

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

ИЗМЕНИТЬ

Я забыл «%» при написании ответа.

person Rutik    schedule 15.07.2021