Express:错误:无法在视图目录中查找视图“索引”

问题描述 投票:0回答:5

我将 Nodejs 模板引擎设置为 ejs。当我使用 ejs 模板运行 app.js 时,收到错误“无法在视图中查找视图‘错误’”

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 compression (/home/runner/kaskusttv/node_modules/compression/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)

让这些快速工作的正确地点是什么?我用它来将引擎设置为 ejs

app.set("views", path.join(__dirname, "views"));
app.set("view engine", "ejs");
javascript express ejs
5个回答
3
投票
app.set("views", path.join(__dirname, "views"));

这行的意思是:express应用程序将使用“views”文件夹中的ejs文件来渲染HTML

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

此错误意味着:express 应用程序尝试在

"/home/runner/kaskusttv/views"
中搜索 index.ejs 文件,但无法搜索。

你的设置是正确的,你只需要将index.ejs文件放在“views”文件夹中(“views”文件夹位于你的应用程序的根目录中)。

我创建了这个沙箱,请随意测试它:https://glitch.com/edit/#!/express-ejs-sandbox0


3
投票

头痛了 1 个小时后,我认为这是因为 Express 和 ejs 找不到视图,要解决这个问题,你必须指定视图文件夹在哪里

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

也许你感到困惑,因为在错误的最后似乎ejs位于views文件夹中,看最后:

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

但事实并非如此,我不知道为什么会发生,但如果你不添加前面的行,它就不起作用


3
投票

我遇到了同样的问题,我的解决方法是使用单引号,如下所示

app.set('views, __dirname + ./views');

我之前用的有两组引号,不起作用

app.set('views', '__dirname + ./views');


0
投票

一旦你创建了“views”目录并将你的index.ejs放入其中。 当你渲染它时,只需添加“视图/索引”

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

0
投票

检查“视图”的所有文件设置路径后,我仍然无法解决。 最后以空格结束(编辑.ejs)。所以我建议正确检查你的名字,中间有空格。

© www.soinside.com 2019 - 2024. All rights reserved.