I have consulted many other similar threads. I have not been able to find an answer.
./
config/
connection.js
controllers/
homeRoutes.js
index.js
db/
schema.db
models/
index.js
User.js
public/
css/
styles.css
views/
layouts/
main.handlebars
server.js
Here is what homeRoutes.js
looks like:
const router = require('express').Router();
const { User, BlogPost, Comment } = require('../models');
//TEST - render homepage
router.get('/test', async (req, res) => {
try {
res.render('main');
} catch (err) {
res.status(500).json(err);
}
});
Here is what server.js has (I think the problem is somewhere in here):
// DEPENDENCIES
const express = require('express');
const sequelize = require('./config/connection');
const routes = require('./controllers');
const exphbs = require('express-handlebars');
const path = require('path');
// HANDLEBARS configuration
// set up Handlebars.js engine
const hbs = exphbs.create({});
// EXPRESS CONFIGURATION
// tells node that we are creating an express server
const app = express();
// sets an initial port.
const PORT = process.env.PORT || 9999;
// inform Express.js on which template engine to use
app.engine('handlebars', hbs.engine);
app.set('view engine', 'handlebars');
// Sets up express app to handle data parsing
app.use(express.urlencoded({ extended: true }));
app.use(express.json());
app.use(express.static(path.join(__dirname, 'public')));
app.use(require('./controllers/homeRoutes'));
// tells app what routes to use
app.use(routes);
// Logging DB info
console.log(`Database name: ${sequelize.config.database} \n running on port:
${sequelize.config.port} \n under hostname: ${sequelize.config.host}`)
// Listener. Ths effectively 'starts' our server
app.listen(PORT, () => {
console.log(`Node Server running on port: ${PORT}`);
})
When I run the server and go to my route, which is localhost:9999/test I get the following error:
Error: Failed to lookup view "main" in views directory "/Users/ep9k/Desktop/Coding Bootcamp/Week14/ur-rich-fsf-pt-02-2021-u-c/Bootcamp14_TechBlog/views"
at Function.render (/Users/ep9k/Desktop/Coding Bootcamp/Week14/ur-rich-fsf-pt-02-2021-u-c/Bootcamp14_TechBlog/node_modules/express/lib/application.js:580:17)
at ServerResponse.render (/Users/ep9k/Desktop/Coding Bootcamp/Week14/ur-rich-fsf-pt-02-2021-u-c/Bootcamp14_TechBlog/node_modules/express/lib/response.js:1012:7)
at /Users/ep9k/Desktop/Coding Bootcamp/Week14/ur-rich-fsf-pt-02-2021-u-c/Bootcamp14_TechBlog/controllers/homeRoutes.js:8:13
at Layer.handle [as handle_request] (/Users/ep9k/Desktop/Coding Bootcamp/Week14/ur-rich-fsf-pt-02-2021-u-c/Bootcamp14_TechBlog/node_modules/express/lib/router/layer.js:95:5)
at next (/Users/ep9k/Desktop/Coding Bootcamp/Week14/ur-rich-fsf-pt-02-2021-u-c/Bootcamp14_TechBlog/node_modules/express/lib/router/route.js:137:13)
at Route.dispatch (/Users/ep9k/Desktop/Coding Bootcamp/Week14/ur-rich-fsf-pt-02-2021-u-c/Bootcamp14_TechBlog/node_modules/express/lib/router/route.js:112:3)
at Layer.handle [as handle_request] (/Users/ep9k/Desktop/Coding Bootcamp/Week14/ur-rich-fsf-pt-02-2021-u-c/Bootcamp14_TechBlog/node_modules/express/lib/router/layer.js:95:5)
at /Users/ep9k/Desktop/Coding Bootcamp/Week14/ur-rich-fsf-pt-02-2021-u-c/Bootcamp14_TechBlog/node_modules/express/lib/router/index.js:281:22
at Function.process_params (/Users/ep9k/Desktop/Coding Bootcamp/Week14/ur-rich-fsf-pt-02-2021-u-c/Bootcamp14_TechBlog/node_modules/express/lib/router/index.js:335:12)
at next (/Users/ep9k/Desktop/Coding Bootcamp/Week14/ur-rich-fsf-pt-02-2021-u-c/Bootcamp14_TechBlog/node_modules/express/lib/router/index.js:275:10)
If I move main.handlebars
up one level into the views directory, I get the following error:
Error: ENOENT: no such file or directory, open '/Users/ep9k/Desktop/Coding Bootcamp/Week14/ur-rich-fsf-pt-02-2021-u-c/Bootcamp14_TechBlog/views/layouts/main.handlebars'
If it is helpful, here is the github repo: https://github.com/epurpur/Bootcamp14_TechBlog
I think You should look here to reference. You forgot to add file in views
folder. In homeRoutes.js
you called it main
(I modestly think this is confusing..in example from reference you have home
). So if you create this file than this code will work without any issues!