EJS 无法在视图目录中查找视图“练习”

问题描述 投票:0回答:1

我正在使用 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;

我已经仔细检查了视图文件是否存在以及路径是否正确,但我仍然收到此错误。我错过了什么?

node.js express ejs
1个回答
0
投票

我已经解决了问题谢谢! res.render(

${path.join(__dirname, '../views/exercises')}
, {exercises: allExercises,title:'Exercise'});

© www.soinside.com 2019 - 2024. All rights reserved.