我正在尝试使用express开发一个小API。只想拥有2个视图,在我的例子中,这意味着2个html文件。一个访问默认为" /"和另一个" / lessons",所以我们得到2个get控件和另一个控制所有其他get控件的控件。
*两个文件都在"视图"文件夹及其扩展名为:* .html
我访问" app.get没有问题(" /课程",功能..."事实上我知道我可以访问它,因为一个简单的&#34 ; console.log(..)"命令。问题是我在尝试渲染时遇到了下一个错误:
[TypeError:this.engine不是函数]。
你可以帮帮我吗?我无法理解问题出在哪里或我做错了什么。我相信它在渲染功能中与它的配置和lessons.html文件有关,因为index.html使用相同的方法没有问题。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);
}
}
});
});