Express js render error this.engine is not a function

半世苍凉 提交于 2019-12-12 03:34:19

问题


I'm trying to develop a small API using express. Just want to have 2 views, which, in my case, means 2 html files. One accesing as default with "/" and the other with "/lessons", so we got 2 get controls plus another one which handles every other get input.

*Both files are in the "views" folder and their extension is: *.html

I have no problem accessing the "app.get("/lessons", function..." in fact I know I can acces to that because a simple "console.log(..)" command. The problem is that I got the next error when trying to render:

[TypeError: this.engine is not a function].

Could you help me? I can't understand where is the problem or what I'm doing wrong. I believe it's in the rendering function and has something to do with its configuration and the lessons.html file because index.html has no problem using the same approach.

var express = require('express');
var app = express();
var mod = require('./module');

app.use(express.static('public'));
app.use(express.static('views'));

var port = process.env.PORT || 8080;
app.listen(port, function() {
    console.log('Node.js listening on port ' + port);
});

app.get("/", function(req, res) {
    console.log("Passed through /");
    res.render('index.html');
});

app.get("/lessons", function(req, res) {
    console.log("passed through lessons");
    res.render('lessons.html', function(err, html) {
        if(err) {
            console.log(err);
        }
        res.send(html);
    });
    //I have tried to to use just: res.render('lessons.html');
});

app.get("*", function(req, res) {
    var usageReq = false;
    var urlPassed = req.url;
    urlPassed = urlPassed.substring(1, urlPassed.length); //remove first "/"

    var expected = mod.seeIfExpected(urlPassed); //returns url(if url) or num(if number) or na(if it doesn't match any)
    mod.processInfo(expected, urlPassed, function(answer) {
        if (answer.found == false && answer.jsonRes == true && answer.info != "inserted") {
            res.json({
                "error": answer.info   
            });
        } else {
            if (answer.jsonRes == true) {
                res.json({
                   "long_url": answer.url,
                   "short_url": answer.id
                });
            } else { // go to url
                var newUrl = "https://" + answer.url;
                res.redirect(newUrl);
            }
    }
});

});

来源:https://stackoverflow.com/questions/43361109/express-js-render-error-this-engine-is-not-a-function

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!