#node.js #express #routes #ejs
#node.js #экспресс #маршруты #ejs
Вопрос:
Я пытаюсь улучшить работу с NodeJS, и мне не очень нравится помещать весь скрипт в один файл.
итак, я использовал эту структуру
./
public/
css/
styles.css
images
views
index.ejs
profile.ejs
app.js
routes.js
Мои файлы прямо сейчас:
app.js
var express = require('express');
var app = express();
app.set('view engine', 'ejs');
app.set('views', __dirname '/views');
app.use(express.static(__dirname '/public'));
// routes
require('./routes.js')(app);
app.listen(1337);
В routes.js , если я использую res.render (‘index’), то он работает, в то время как при использовании res.render (‘profile’) выдается ошибка, не удалось выполнить поиск вида «профиль» в каталоге views
routes.js —— Работает
module.exports = function(app) {
app.get('/', function(req, res) {
res.render('index');
});
};
routes.js —— Не работает
module.exports = function(app) {
app.get('/', function(req, res) {
res.render('profile');
});
};
index.ejs предполагает, что и profile.ejs имеют одинаковое содержимое.
Кто-нибудь может объяснить, в чем проблема, если я использую res.render (‘profile’) в routes.js
Редактировать: Полное сообщение об ошибке:
Error: Failed to lookup view "profile" in views directory "/home/anand03/Desktop/mynode/views"
at EventEmitter.render (/home/anand03/Desktop/mynode/node_modules/express/lib/application.js:579:17)
at ServerResponse.render (/home/anand03/Desktop/mynode/node_modules/express/lib/response.js:960:7)
at /home/anand03/Desktop/mynode/routes2.js:10:12
at Layer.handle [as handle_request] (/home/anand03/Desktop/mynode/node_modules/express/lib/router/layer.js:95:5)
at next (/home/anand03/Desktop/mynode/node_modules/express/lib/router/route.js:131:13)
at Route.dispatch (/home/anand03/Desktop/mynode/node_modules/express/lib/router/route.js:112:3)
at Layer.handle [as handle_request] (/home/anand03/Desktop/mynode/node_modules/express/lib/router/layer.js:95:5)
at /home/anand03/Desktop/mynode/node_modules/express/lib/router/index.js:277:22
at Function.process_params (/home/anand03/Desktop/mynode/node_modules/express/lib/router/index.js:330:12)
at next (/home/anand03/Desktop/mynode/node_modules/express/lib/router/index.js:271:10)
Комментарии:
1. Должно быть что-то еще, чего вы не показываете в своем коде. Этот код работает просто отлично. И нет никаких причин, по которым этого не должно было быть. Можете ли вы показать полное сообщение об ошибке?
2. Это точный код, который я использую. Я также не понимаю, в чем проблема в этом.
3. Вы уверены, что файл профиля имеет расширение ejs ? Можете ли вы разместить весь код где-нибудь общедоступно. Я имею в виду минимальную настройку, которая воспроизводит проблему, чтобы я мог попробовать.