无法在视图目录中查找视图“ index.ejs”

时间:2018-07-08 10:55:05

标签: javascript node.js express ejs

我的Express应用(app.js文件)中包含以下代码:

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

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

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

app.listen(8080);

以及以下依赖项:

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

这是我的文件夹结构:

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

但是当我运行该应用程序时,它显示此错误:

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

如果有帮助,还会出现其他错误消息:

  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)

如果我仅使用res.send("SOME TEXT")不会出现任何错误,但是当我尝试呈现ejs文件时却没有。有什么问题吗?

5 个答案:

答案 0 :(得分:3)

在请求任何视图文件之前,您需要设置view目录和viewengine

因此,您需要在app.get

之前添加以下几行
app.set('views', './views');
app.set('view engine', 'ejs');

您的res.render('index.ejs');应该更改为

res.render('index');

希望这会有所帮助!

答案 1 :(得分:1)

您是否设置了views文件夹?

app.set('views', './views')

答案 2 :(得分:1)

首先,您必须通过设置告诉使用哪种视图引擎

javascript // set the view engine to ejs app.set('view engine', 'ejs');

在引用视图时,您应该省略扩展名。因此,使用res.render('index.ejs');代替res.render('index');

由于您使用默认视图文件夹views存储视图文件,因此不需要设置视图文件夹。

答案 3 :(得分:0)

确保公用文件夹中只有css文件,其他文件夹可以位于公用文件夹之外。

答案 4 :(得分:0)

当您的ejs视图引擎无法找到文件或文件夹时,基本上会出现此问题。 因此,请执行以下检查:

1。检查目录名称。应该是“视图”而不是“视图”。

2.check目录下的文件是否具有正确的文件扩展名?只能是.ejs,不能是.html.json等其他货币。

3.tell表示我将通过以下代码使用ejs视图引擎:

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