我正在使用 Node.js 和 Express.js 构建一个健身追踪应用程序。我正在尝试从视图目录中呈现一个名为 exercises.ejs 的视图,但出现以下错误:
Error: Failed to lookup view "exercises" in views directory "C:\Users\burak\Desktop\Fitness_Tracker\views"
这是我的应用程序的目录结构:
├── app
│ ├── Controllers
│ ├── Routes
│ └── views
│ ├── index.ejs
│ └── exercises.ejs
├── node_modules
├── package.json
├── package-lock.json
└── server.js
我在app js中的index.js文件是这样的:
import express from "express"
import routes from '../app/Routes/index';
import ejs from 'ejs'
import path from 'path'
const app = express()
const port = 3000
app.use(express.json())
app.use(express.urlencoded({ extended: true }))
app.set('views', path.join(__dirname, 'views'));
app.set('view engine', 'ejs');
app.engine('ejs', ejs.renderFile);
app.use('/', routes);
app.get('/', (req, res) => {
res.render('index', { title: 'My Website', message: 'Welcome to my website!' });
})
app.listen(port, () => {
console.log(`Example app listening on port ${port}`)
})
我可以到达主目录。
但是我的 Exercise.js 控制器文件看不到 views/exercises.ejs 路径 这是我的控制器代码:
import db from '../../src/models/index'
import express from "express"
import path from 'path'
import ejs from 'ejs'
const app = express();
// app.set('views', path.join(__dirname, 'views'));
// app.set('views', path.join(__dirname, '..', 'views'));
app.set('views', path.join(__dirname, 'views'));
class ExerciseController{
static async getAll(req, res) {
try {
const allExercises = await db.Exercises.findAll();
res.render('exercises', {exercises: allExercises});
} catch (error) {
return res.status(500).send(error.message);
}
}
static async addExercise(req, res) {
try {
const exercise = await db.Exercises.create(req.body);
return res.status(201).json({
exercise,
});
} catch (error) {
return res.status(500).json({ error: error.message });
}
}
}
export default ExerciseController;
我已经仔细检查了视图文件是否存在以及路径是否正确,但我仍然收到此错误。我错过了什么?
我已经解决了问题谢谢! res.render(
${path.join(__dirname, '../views/exercises')}
, {exercises: allExercises,title:'Exercise'});