функция EJS include не может найти шаблон с расширением html
моя настройка двигателя ejs-это приложение.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
дома.html выглядит так:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8" />
<title>home</title>
<% include head %>
</head>
<body>
</body>
</html>
и голову.html выглядит так:
<link rel="stylesheet" type="text/css" href="css/main.css">
<script type="text/javascript" src="js/jquery-1.5.js"></script>
проблема в голове файла.html не будет проанализирован, если расширение было html. Ошибка говорит, что он ожидает файл ejs. Итак, есть проблема с функцией include?
4 ответов
как предлагает Эли Gnrd, вы используете .ejs
файлы непосредственно путем изменения view engine
конфигурация Express.
если это не вариант, и вы хотите/должны использовать .html
в качестве расширения для ваших шаблонов вы должны быть явными в include:
<% include head.html %>
вы можете использовать .ejs файлы непосредственно с помощью app.set('view engine', 'ejs');
и переименование индекса.html для индексирования.EJS по.
вот пример: http://robdodson.me/blog/2012/05/31/how-to-use-ejs-in-express/
arrr;)
- вы не упомянули, какое приложение - поэтому я предполагаю Express >=3
- решение: забудьте точку и _ _ express в
app.двигатель.'(HTML-код', требуют('EJS по').__express);
следует читать :
app.engine('html', require('ejs').renderFile);
у меня тоже была эта проблема и я изменил этот файл моего приложения:
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';
}
Они могут изменять функцию по своему желанию.
Я надеюсь, что это полезно.