我在视图目录中收到错误Error: Failed to lookup view "/listings",我尝试将app.set('views', path.join(__dirname, 'views'));移到app.set('view engine',‘ejs’)下面;反之亦然。同样,在我做的app.get中,('/listings/index)仍然一无所获。
我的文件结构
node_modules
views\listings
listings.ejs
index.js
package-lock.json
package.jsonindex.js
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
<!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
{
"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"
}
}发布于 2021-05-23 13:57:15
首先,确保views文件夹具有正确的名称。其次,检查文件扩展名是否正确,最后检查渲染中的路径:
app.get('/listings', (req, res) => {
res.render('listings', { listings }); // remove the slash to get the correct path
})发布于 2021-05-23 14:02:17
首先,你的listings文件名是index,但是你试图渲染的ejs文件并不存在。
其次,你不需要在你的文件名前使用/。
解决方案
所以基本上你要做的就是把你的ejs文件名改成listings或者把渲染参数改成index。
最后,删除文件名前的/。
//index.ejs
app.get('/listings', (req, res) => {
res.render('index', { listings });
})//listings.ejs
app.get('/listings', (req, res) => {
res.render('listings', { listings });
})发布于 2021-05-24 02:07:26
由于文件listings.ejs位于views\listings文件夹中,因此代码应为:
app.get('/listings', (req, res) => {
res.render('listings/listings', { listings });
})https://stackoverflow.com/questions/67656495
复制相似问题