TypeError: this.engine is not a function

Content in localhost:

TypeError: this.engine is not a function
    at View.render (/home/vitalkanev/node_modules/express/lib/view.js:127:8)
    at tryRender (/home/vitalkanev/node_modules/express/lib/application.js:640:10)
    at Function.render (/home/vitalkanev/node_modules/express/lib/application.js:592:3)
    at ServerResponse.render (/home/vitalkanev/node_modules/express/lib/response.js:971:7)
    at /home/vitalkanev/siteData/expressors/data.js:5:13
    at Layer.handle [as handle_request] (/home/vitalkanev/node_modules/express/lib/router/layer.js:95:5)
    at next (/home/vitalkanev/node_modules/express/lib/router/route.js:137:13)
    at Route.dispatch (/home/vitalkanev/node_modules/express/lib/router/route.js:112:3)
    at Layer.handle [as handle_request] (/home/vitalkanev/node_modules/express/lib/router/layer.js:95:5)
    at /home/vitalkanev/node_modules/express/lib/router/index.js:281:22

Content of the file:

let express = require("express");
let app = express();

app.get("/", function(req, res) {
        res.render("./index.html");
});

app.get("/somepage", function(req, res) {
        res.render("./somePage.html");
});

app.listen(3000);

Listing of the directory:

vitalkanev@vitalkanev-HP:~/siteData/expressors$ ls
data.js  views

Operating System: Lubuntu Zesty
Node version: 8.4.0
NPM version: 5.3.0, as comes with the Node version above

Author: Fantashit

1 thought on “TypeError: this.engine is not a function

  1. Try this

    npm install ejs --save
    npm install path --save

    Add this to your app.js(express js file)

    var path = require('path');
    app.set('views', path.join(__dirname, 'views'));
    app.engine('html', require('ejs').renderFile);
    app.set('view engine', 'html');

    OR this one liner will work

    app.use(express.static(__dirname + '/public'));

    Next time please use Stackoverflow before posting a issue here 😄

Comments are closed.