【问题标题】:Express: Error: Failed to lookup view "index" in views directoryExpress:错误:无法在视图目录中查找视图“索引”
【发布时间】:2021-07-23 16:23:19
【问题描述】:

我将我的 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


    【解决方案1】:

    头痛 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"
    

    但不是,我不知道为什么会这样,但是如果你不添加前面的行它就不起作用

    【讨论】:

      【解决方案2】:

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

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

      【讨论】:

        【解决方案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"
        

        这个错误的意思是:快递应用试图在"/home/runner/kaskusttv/views"中搜索index.ejs文件,但是没有。

        您的设置是正确的,您只需将 index.ejs 文件放入“views”文件夹中(并且“views”文件夹位于您应用的根目录中)。

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

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2021-06-26
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2015-08-19
          • 2019-06-26
          • 1970-01-01
          相关资源
          最近更新 更多