Ошибка: Не удалось выполнить поиск в представлении «location.ejs» в каталоге views

#javascript #node.js #express #ejs

#javascript #node.js #экспресс #ejs

Вопрос:

Я получаю сообщение об ошибке —

 Error: Failed to lookup view "location.ejs" in views directory 
"e:NodeJs_ProjectgeolocationProjectviews"
 at Function.render 
  

Пожалуйста, помогите устранить ошибку.

server.js

 
var express  =   require('express');
var app  =   express();
const path = require('path');

//Middleware express. For session also.
var expressJwt = require('express-jwt');
var session = require('express-session');
var restify = require('restify');
var bodyParser = require('body-parser');
var mysql = require('mysql');

 app.use(bodyParser.json());
 app.use(bodyParser.urlencoded({ extended: false }));
 app.use(express.static ('public'));

var cors = require('cors')  // Not required.

app.use(cors());  
app.use(express.static('public'))


app.set('views',path.join(__dirname '/views'));

app.engine('ejs', require('ejs').renderFile);
app.set('view engine', 'ejs');

app.get('/', function(req, res) {
    res.render('location.ejs');
  });


app.listen(8080,(req,res)=>{
    console.log('server running on port 8080')
})

  

Я даже пытался —

app.set(‘views’, __dirname ‘/views /’);

и

app.set(‘views’, __dirname ‘views’);

но безрезультатно

NodeJs_Project ..geolocationProject ..views ..location.ejs

Комментарии:

1. ошибка заключается в том, что в location.ejs вашей views папке нет файла с именем

2. Файл присутствует. Я опубликую структуру файла в своем вопросе

3. app.engine('ejs', require('ejs').renderFile); измените на app.engine('ejs', require('ejs')) , и вы сможете просто использовать res.render('location') без .ejs расширения

4. Если я использую его — app.engine(‘ejs’, require(‘ejs’));. Я получаю ошибку — требуется функция обратного вызова.

5. возможно, измените импорт как const ejs = require('ejs') и затем app.set('view engine', 'ejs')