我将 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");
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
头痛了 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"
但事实并非如此,我不知道为什么会发生,但如果你不添加前面的行,它就不起作用
我遇到了同样的问题,我的解决方法是使用单引号,如下所示
app.set('views, __dirname + ./views');
我之前用的有两组引号,不起作用
app.set('views', '__dirname + ./views');
一旦你创建了“views”目录并将你的index.ejs放入其中。 当你渲染它时,只需添加“视图/索引”
res.render("views/index",{....});
检查“视图”的所有文件设置路径后,我仍然无法解决。 最后以空格结束(编辑.ejs)。所以我建议正确检查你的名字,中间有空格。