0

I am working along with a tutorial to learn MVC and I am unable to get my views to render. When I try to render my views locally I receive the following error. I'm not well versed in serving views from express, so I'm not sure about what steps to take in trouble shooting this error.

Error: Failed to lookup view "index" in views directory "views"

My app.js file reads as follows:

const path  = require("path")
const express = require('express');
const app = express()

const port = process.env.port || 3000


// express middelware
app.use(express.urlencoded({ extended: false }))
app.use(express.json())
app.use(express.static("public"))
// views are the files you render
app.set("views", "views")
app.set("view engine", "hbs")
// end express middleware

app.get("/", (req, res) => {
    res.render("index")
})

app.get("/about", (req, res) => {
    res.render("about")
})

app.listen(port, () => {
    console.log(`listening on port ${port}`)
})

My file setup is as follows:

enter image description here

Jatin Mehrotra
  • 9,286
  • 4
  • 28
  • 67
David Reke
  • 535
  • 1
  • 5
  • 20

1 Answers1

0
const path  = require("path")
const express = require('express');
const app = express()
const port = process.env.port || 3000
// express middelware
app.use(express.urlencoded({ extended: false }))
app.use(express.json())
app.use(express.static("public"))
// views are the files you render
app.set('views', __dirname + '/../views');
app.set("view engine", "hbs")
// end express middleware
app.get("/", (req, res) => {
    res.render("index")
})
app.get("/about", (req, res) => {
    res.render("about")
})
app.listen(port, () => {
    console.log(`listening on port ${port}`)
})

You need to reference the views folder as part of the directory path. app.set('views', __dirname + '/../views');