首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >错误:在视图目录中查找视图"/listings“失败

错误:在视图目录中查找视图"/listings“失败
EN

Stack Overflow用户
提问于 2021-05-23 13:37:09
回答 3查看 79关注 0票数 0

我在视图目录中收到错误Error: Failed to lookup view "/listings",我尝试将app.set('views', path.join(__dirname, 'views'));移到app.set('view engine',‘ejs’)下面;反之亦然。同样,在我做的app.get中,('/listings/index)仍然一无所获。

我的文件结构

代码语言:javascript
复制
node_modules
views\listings
   listings.ejs
index.js
package-lock.json
package.json

index.js

代码语言:javascript
复制
const express = require('express');
const app = express();
const path = require('path');


app.use(express.urlencoded({ extended: true }));
app.use(express.json());
app.set('view engine', 'ejs');
app.set('views', path.join(__dirname, 'views'));




let listings = [{
        listingAgent: 'Todd Barkley',
        Review: 'Awesome Agent'
    },
    {
        listingAgent: 'David Smith',
        Review: 'Good agent'
    },
    {
        listingAgent: 'Erick Jones',
        Review: 'Terrible agent, glad we fired him'
    }
]


app.get('/listings', (req, res) => {
    res.render('/listings', { listings });
})

app.listen(4000, () => {
    console.log("On port 4000")
})

index.ejs

代码语言:javascript
复制
<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Public Listings</title>
</head>

<body>
    <h1>Public Listings</h1>
    <ul>
        <% for (let l of listings ) {%>
            <li>
                <%= l.Review %>
                    <b><%=l.listingAgent  %> </b>
            </li>
            <% } %>
    </ul>
</body>

</html>

package.json

代码语言:javascript
复制
{
  "name": "practicerest",
  "version": "1.0.0",
  "description": "Practice ",
  "main": "index.js",
  "scripts": {
    "test": "echo \"Error: no test specified\" && exit 1"
  },
  "author": "Manny Verma",
  "license": "ISC",
  "dependencies": {
    "ejs": "^3.1.6",
    "express": "^4.17.1"
  }
}
EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2021-05-23 13:57:15

首先,确保views文件夹具有正确的名称。其次,检查文件扩展名是否正确,最后检查渲染中的路径:

代码语言:javascript
复制
app.get('/listings', (req, res) => {
    res.render('listings', { listings }); // remove the slash to get the correct path
})
票数 2
EN

Stack Overflow用户

发布于 2021-05-23 14:02:17

首先,你的listings文件名是index,但是你试图渲染的ejs文件并不存在。

其次,你不需要在你的文件名前使用/

解决方案

所以基本上你要做的就是把你的ejs文件名改成listings或者把渲染参数改成index

最后,删除文件名前的/

代码语言:javascript
复制
//index.ejs
app.get('/listings', (req, res) => {
    res.render('index', { listings });
})
代码语言:javascript
复制
//listings.ejs
app.get('/listings', (req, res) => {
    res.render('listings', { listings });
})
票数 2
EN

Stack Overflow用户

发布于 2021-05-24 02:07:26

由于文件listings.ejs位于views\listings文件夹中,因此代码应为:

代码语言:javascript
复制
app.get('/listings', (req, res) => {
    res.render('listings/listings', { listings });
})
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/67656495

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档