Не удалось выполнить поиск вида «профиль» в каталоге views

#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 ? Можете ли вы разместить весь код где-нибудь общедоступно. Я имею в виду минимальную настройку, которая воспроизводит проблему, чтобы я мог попробовать.