admin管理员组

文章数量:1277475

I set my nodejs template engine over to ejs. When I run my app.js with my ejs template, I receive a error of "Failed to lookup view 'error' in views"

Error: Failed to lookup view "index" in views directory "/home/runner/kaskusttv/views"
    at Function.render (/home/runner/kaskusttv/node_modules/express/lib/application.js:580:17)
    at ServerResponse.render (/home/runner/kaskusttv/node_modules/express/lib/response.js:1012:7)
    at /home/runner/kaskusttv/app.js:72:6
    at Layer.handle [as handle_request] (/home/runner/kaskusttv/node_modules/express/lib/router/layer.js:95:5)
    at next (/home/runner/kaskusttv/node_modules/express/lib/router/route.js:137:13)
    at Route.dispatch (/home/runner/kaskusttv/node_modules/express/lib/router/route.js:112:3)
    at Layer.handle [as handle_request] (/home/runner/kaskusttv/node_modules/express/lib/router/layer.js:95:5)
    at /home/runner/kaskusttv/node_modules/express/lib/router/index.js:281:22
    at Function.process_params (/home/runner/kaskusttv/node_modules/express/lib/router/index.js:335:12)
    at next (/home/runner/kaskusttv/node_modules/express/lib/router/index.js:275:10)
    at pression (/home/runner/kaskusttv/node_modules/pression/index.js:220:5)
    at Layer.handle [as handle_request] (/home/runner/kaskusttv/node_modules/express/lib/router/layer.js:95:5)
    at trim_prefix (/home/runner/kaskusttv/node_modules/express/lib/router/index.js:317:13)
    at /home/runner/kaskusttv/node_modules/express/lib/router/index.js:284:7
    at Function.process_params (/home/runner/kaskusttv/node_modules/express/lib/router/index.js:335:12)
    at next (/home/runner/kaskusttv/node_modules/express/lib/router/index.js:275:10)

What is the proper place to get these to work in express? I used this to set the engine to ejs

app.set("views", path.join(__dirname, "views"));
app.set("view engine", "ejs");

I set my nodejs template engine over to ejs. When I run my app.js with my ejs template, I receive a error of "Failed to lookup view 'error' in views"

Error: Failed to lookup view "index" in views directory "/home/runner/kaskusttv/views"
    at Function.render (/home/runner/kaskusttv/node_modules/express/lib/application.js:580:17)
    at ServerResponse.render (/home/runner/kaskusttv/node_modules/express/lib/response.js:1012:7)
    at /home/runner/kaskusttv/app.js:72:6
    at Layer.handle [as handle_request] (/home/runner/kaskusttv/node_modules/express/lib/router/layer.js:95:5)
    at next (/home/runner/kaskusttv/node_modules/express/lib/router/route.js:137:13)
    at Route.dispatch (/home/runner/kaskusttv/node_modules/express/lib/router/route.js:112:3)
    at Layer.handle [as handle_request] (/home/runner/kaskusttv/node_modules/express/lib/router/layer.js:95:5)
    at /home/runner/kaskusttv/node_modules/express/lib/router/index.js:281:22
    at Function.process_params (/home/runner/kaskusttv/node_modules/express/lib/router/index.js:335:12)
    at next (/home/runner/kaskusttv/node_modules/express/lib/router/index.js:275:10)
    at pression (/home/runner/kaskusttv/node_modules/pression/index.js:220:5)
    at Layer.handle [as handle_request] (/home/runner/kaskusttv/node_modules/express/lib/router/layer.js:95:5)
    at trim_prefix (/home/runner/kaskusttv/node_modules/express/lib/router/index.js:317:13)
    at /home/runner/kaskusttv/node_modules/express/lib/router/index.js:284:7
    at Function.process_params (/home/runner/kaskusttv/node_modules/express/lib/router/index.js:335:12)
    at next (/home/runner/kaskusttv/node_modules/express/lib/router/index.js:275:10)

What is the proper place to get these to work in express? I used this to set the engine to ejs

app.set("views", path.join(__dirname, "views"));
app.set("view engine", "ejs");
Share Improve this question asked Apr 30, 2021 at 10:02 KASKUSTTVKASKUSTTV 271 gold badge1 silver badge5 bronze badges
Add a ment  | 

5 Answers 5

Reset to default 3
app.set("views", path.join(__dirname, "views"));

This line means: The express app will use ejs files in "views" folder to render HTML

Error: Failed to lookup view "index" in views directory "/home/runner/kaskusttv/views"

This error means: The express app tried to search for index.ejs file in "/home/runner/kaskusttv/views", but it couldn't.

Your setup is correct, you just need to put index.ejs file in the "views" folder (and the "views" folder is in the root directory of your app).

I created this sandbox, feel free to test it : https://glitch./edit/#!/express-ejs-sandbox0

After 1 hour of headache I figured it was because express and ejs could not find the view, to solve this you have to specified where is your views folder

    app.set("views", join(__dirname, "views"));
    app.set("view engine", "ejs");

Maybe you feel confused because at the end of the error it seems that ejs is located in the views folder, look at the end:

Error: Failed to lookup view "auth/tes/indexasd" in views directory "/home/ivan/code/google-photos-clone-typescript-nodejs/src/views"

But it is not, I don't know why it happens but if you don't add the previous lines it doesn't work

I had the same issue and the fix for me was to use a single quote like so app.set('views, __dirname + ./views');

The one I was using before has two sets of quotes and did not work app.set('views', '__dirname + ./views');

Once you have made "views" directory and put your index.ejs in it. When you render it just add "views/index"

res.render("views/index",{....});

After checking all the file setup path for "views" still i cant able to solve. Finally ended by space in between (edit .ejs).So i remend to check the name of your properly with space in between.

本文标签: javascriptExpress Error Failed to lookup view quotindexquot in views directoryStack Overflow