[英]Failed to lookup view "index.ejs" in views directory
I have the following code in my express app (app.js file):我的快速应用程序(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);
And the following dependencies:以及以下依赖项:
"ejs": "^2.6.1",
"express": "^4.16.3",
"request": "^2.87.0"
And this is my folder structure:这是我的文件夹结构:
myapp
app.js
package.json
views
index.ejs
node_modules
[all node files]
But when I run the app, it shows this error:但是当我运行应用程序时,它显示了这个错误:
Failed to lookup view "index.ejs" in views directory "mylocaldirectory/myapp/views"
If it would help here are the other error messages:如果它有帮助,这里是其他错误消息:
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)
I get no error if I just use res.send("SOME TEXT")
but when I try to render an ejs file, it doesn't.如果我只使用
res.send("SOME TEXT")
我没有错误,但是当我尝试渲染一个 ejs 文件时,它没有。 What's the issue?有什么问题?
You need to set your view
directory and your viewengine
before requesting any of your view files.在请求任何视图文件之前,您需要设置
view
目录和view
viewengine
。
Hence you need to add the below lines, before your app.get
因此,您需要在
app.get
之前添加以下app.get
app.set('views', './views');
app.set('view engine', 'ejs');
And your res.render('index.ejs');
还有你的
res.render('index.ejs');
should be changed as,应该改为,
res.render('index');
Hope this helps!希望这可以帮助!
您是否设置了视图文件夹?
app.set('views', './views')
First you have to tell express what view engine to use by setting首先,您必须通过设置来告诉表达要使用的视图引擎
javascript // set the view engine to ejs app.set('view engine', 'ejs');
And when referring to a view you should leave out the extension.当提到一个视图时,你应该省略扩展名。 So instead of
res.render('index.ejs');
所以代替
res.render('index.ejs');
use res.render('index');
使用
res.render('index');
. .
Setting up the view folder is not required since you're using the default view folder views
to store your view files.由于您使用默认的视图文件夹
views
来存储视图文件,因此不需要设置视图文件夹。
确保公共文件夹中只有 css 文件。其他文件夹可以在公共文件夹之外。
This issue basically comes when your ejs views engine unable to find file or folder.当您的 ejs 视图引擎无法找到文件或文件夹时,基本上会出现此问题。 So do following checks:
所以做以下检查:
1.check directory name. 1.检查目录名称。 it should be 'views' not 'view'.
它应该是“观点”而不是“观点”。
2.check file under directory having correct file extension or not? 2.检查目录下的文件是否具有正确的文件扩展名? it should be
.ejs
only not others like .html
or .json
etc.它应该是
.ejs
不仅没有像其他人一样.html
或.json
等。
3.tell express that i am going to use ejs view engine by using below code: 3. 使用以下代码告诉 express 我将使用 ejs 视图引擎:
app.set('view engine','ejs');
try this it worked for me.试试这个它对我有用。
// view engine setup
app.set('view engine', 'ejs');
app.set('views', __dirname + '/views');
I used this:我用过这个:
const express = require("express");
const server = express();
const path = require("path");
server.set("views", path.join(__dirname, "views"));
server.set("view engine", "ejs");
server.use(express.static("public"));
server.get("/", (req, res) => {
res.render("index");
});
server.listen(8080);
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.