Функция ejs include не может найти шаблон с расширением html
Мой движок ejs настроен на app.js, как показано ниже:
// this parse html file as ejs file
app.engine('.html', require('ejs').__express);
app.set('view engine', 'html');
app.set('views', __dirname + '/view');
Мой каталог выглядит следующим образом:
view (folder)
home.html
head.html
app.js
Home.html выглядит следующим образом:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8" />
<title>home</title>
<% include head %>
</head>
<body>
</body>
</html>
и head.html:
<link rel="stylesheet" type="text/css" href="css/main.css">
<script type="text/javascript" src="js/jquery-1.5.js"></script>
проблема в файле head.html не будет проанализирована, если расширение было html. Ошибка говорит, что он ожидает файл ejs. Итак, есть проблема с функцией include?
Ответы
Ответ 1
Как предлагает Elie Gnrd, вы используете файлы .ejs
напрямую, изменяя конфигурацию view engine
Express.
Если это не вариант, и вам нужно/нужно продолжать использовать .html
в качестве расширения для ваших шаблонов, вы должны быть явным в include:
<% include head.html %>
Ответ 2
Вы можете напрямую использовать файлы .ejs, используя app.set('view engine', 'ejs');
и переименовав index.html в index.ejs.
Вот пример:
http://robdodson.me/blog/2012/05/31/how-to-use-ejs-in-express/
Ответ 3
arrr;)
- вы не указали, какое приложение - поэтому я предполагаю Express >= 3
- решение: забудьте точку и __express в
app.engine('. html', require ('ejs').__ express);
Он должен читать:
app.engine('html', require('ejs').renderFile);
Ответ 4
У меня тоже была эта проблема и изменил этот файл моего приложения:
myapp/node_modules/ejs/lib/ejs.js
Функция:
function resolveInclude(name, filename) {
var path = join(dirname(filename), name);
var ext = extname(name);
if (!ext) path += '.ejs';
return path;
}
Вы можете изменить расширение по умолчанию или как в моем случае я изменил функцию на более прямую:
function resolveInclude(name, filename) {
return join(dirname(filename), name) + '.html';
}
Они могут изменять функцию по своему усмотрению.
Я надеюсь, что это будет полезно.