У меня есть проект nodejs, созданный генератором express. Это часть древовидного представления моего проекта:
MyProject/
|-- routes/
| |-- content.js
|-- views/
| |-- contents/
| | |-- bh/
| | |-- bh_1.ejs
| | |-- bh_2.ejs
| |-- content.ejs
|-- app.js
В app.js
я определил базовый путь для include
:
app.set('views', path.join(__dirname, 'views'));
В routes/content.js
, Я сделал верхний файл E JS views/content.ejs
:
var params = {
path_bh_1: './contents/bh/bh_1.ejs',
path_bh_2: './contents/bh/bh_2.ejs'
}
/* GET home page. */
router.get('/', function(req, res, next) {
res.render('content', params);
});
В views/content.ejs
, я включил второй файл E JS:
<%- include(path_bh_1); %>
In views/bh/bh_1.ejs
, я включил третий:
<%- include(path_bh_2); %>
В views/bh/bh_2.ejs
есть нормальные HTML заявления:
<p>xxx</p>
Но когда я захожу на свой веб-сайт, браузер показывает сообщение об ошибке: Could not find the include file "contents/bh/bh_2.ejs"
. И я изменил routes/content.js
:
var params = {
path_bh_1: './contents/bh/bh_1.ejs',
path_bh_2: '../../contents/bh/bh_2.ejs' // the path is modified
}
Работает. Я думаю, что это странно. app.set
может управлять только операцией верхнего слоя include
? Будем благодарны за любые ответы.