Friday, May 10, 2024
 Popular · Latest · Hot · Upcoming
152
rated 0 times [  154] [ 2]  / answers: 1 / hits: 20344  / 6 Years ago, sun, july 8, 2018, 12:00:00

I have the following code in my express app (app.js file):



const express = require(express);
const app = express();

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

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

app.listen(8080);


And the following dependencies:



ejs: ^2.6.1,
express: ^4.16.3,
request: ^2.87.0


And this is my folder structure:



myapp
app.js
package.json
views
index.ejs
node_modules
[all node files]


But when I run the app, it shows this error:



Failed to lookup view index.ejs in views directory mylocaldirectory/myapp/views


If it would help here are the other error messages:



  at Function.render (/mylocaldirectory/myapp/node_modules/express/lib/application.js:580:17)
at ServerResponse.render (/mylocaldirectory/myapp/node_modules/express/lib/response.js:1008:7)
at //mylocaldirectory/myapp/app.js:11:9
at Layer.handle [as handle_request] (/mylocaldirectory/myapp/node_modules/express/lib/router/layer.js:95:5)
at next (/mylocaldirectory/myapp/node_modules/express/lib/router/route.js:137:13)
at Route.dispatch (/mylocaldirectory/myapp/node_modules/express/lib/router/route.js:112:3)
at Layer.handle [as handle_request] (/mylocaldirectory/myapp/node_modules/express/lib/router/layer.js:95:5)
at /mylocaldirectory/myapp/node_modules/express/lib/router/index.js:281:22
at Function.process_params (/mylocaldirectory/myapp/node_modules/express/lib/router/index.js:335:12)
at next (/mylocaldirectory/myapp/node_modules/express/lib/router/index.js:275:10)


I get no error if I just use res.send(SOME TEXT) but when I try to render an ejs file, it doesn't. What's the issue?


More From » node.js

 Answers
11

You need to set your view directory and your viewengine before requesting any of your view files.



Hence you need to add the below lines, before your app.get



app.set('views', './views');
app.set('view engine', 'ejs');


And your res.render('index.ejs'); should be changed as,



res.render('index');


Hope this helps!


[#54030] Wednesday, July 4, 2018, 6 Years  [reply] [flag answer]
Only authorized users can answer the question. Please sign in first, or register a free account.
destiniemartinac

Total Points: 92
Total Questions: 106
Total Answers: 111

Location: Cyprus
Member since Mon, Oct 24, 2022
2 Years ago
;