简体   繁体   English

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

[英]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.

相关问题 ExpressJs:无法在视图目录中查找视图“索引” - ExpressJs: Failed to lookup view "index" in views directory 错误:无法在视图目录中查找视图“skills.ejs” - Error: Failed to lookup view “skills.ejs” in views directory 错误:无法在视图目录“/app/views”中查找视图“index” - Error: Failed to lookup view "index" in views directory "/app/views" 错误:无法在视图目录“public”中查找视图“index” - Error: Failed to lookup view “index” in views directory “public” Express:错误:无法在视图目录中查找视图“索引” - Express: Error: Failed to lookup view "index" in views directory 500错误:无法在视图目录中查找视图“索引” - 500 Error: Failed to lookup view “index” in views directory 带有EJS模板的Express应用程序给出错误:无法在视图目录“ / home / USER / Desktop / scholarship-app / views”中查找视图“ / id” - Express app with EJS template giving Error: Failed to lookup view “/id” in views directory “/home/USER/Desktop/scholarship-app/views” 如何访问index.ejs的javascript部分中的本地数据(视图)? - How to access locals data in javascript part of index.ejs (view)? 错误:无法在视图目录中查找视图“/listings” - Error: Failed to lookup view "/listings" in views directory 错误:无法在视图目录中查找视图“列表” - Error: Failed to lookup view “list” in views directory
 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM