Reputation: 55
I keep getting "app.engine('handlebars', handlebars()); type error 'handlebars' is not a function? Is there anything wrong in my code?
const express = require('express');
const nodemailer = require("nodemailer");
const paths = require('path');
const handlebars = require('express-handlebars')
const app = express();
require("dotenv").config();
//View engine setup
app.set("view engine", 'handlebars');
app.engine('handlebars', handlebars());
//Static Folder
app.use('/public', express.static(path.join(__dirname, 'public')))
//Body Parser MiddleWars;
app.use(express.urlencoded({extended: false}));
app.use(express.json())
const port = 3001;
app.listen(port, () => {
console.log(`Server is running on port: ${port}`);
});
Upvotes: 2
Views: 3944
Reputation: 2097
According to the examples express-handlebars
provided, you must import the engine
function from the module:
(Using Imports)
import express from 'express';
import { engine } from 'express-handlebars';
const app = express();
app.engine('handlebars', engine());
app.set('view engine', 'handlebars');
app.set("views", "./views");
app.get('/', (req, res) => {
res.render('home');
});
app.listen(3000);
So, instead of calling handlebars
directly, you should be calling handlebars.engine
.
const express = require('express');
const nodemailer = require("nodemailer");
const paths = require('path');
const handlebars = require('express-handlebars')
const app = express();
require("dotenv").config();
//View engine setup
app.set("view engine", 'handlebars');
app.engine('handlebars', handlebars.engine());
//Static Folder
app.use('/public', express.static(path.join(__dirname, 'public')))
//Body Parser MiddleWars;
app.use(express.urlencoded({extended: false}));
app.use(express.json())
const port = 3001;
app.listen(port, () => {
console.log(`Server is running on port: ${port}`);
});
Upvotes: 5