我想使用express 4提供单个html页面。它曾用于以前版本的Express,但现在它告诉我“没有指定默认引擎且没有提供扩展”。非常感谢提前。
var express = require('express');
var path = require('path');
var logger = require('morgan');
var cookieParser = require('cookie-parser');
var bodyParser = require('body-parser');
var app = express();
var router = express.Router();
app.use(logger('dev'));
app.use(bodyParser.json());
app.use(bodyParser.urlencoded({ extended: false }));
app.use(cookieParser());
app.use(express.static( path.join(__dirname, 'public')));
router.get('/', function(req, res) {
res.render('public/main.html');
});
module.exports = app;
下面的图书馆信息
"dependencies": {
"express": "~4.9.0",
"body-parser": "~1.8.1",
"cookie-parser": "~1.3.3",
"morgan": "~1.3.0",
"serve-favicon": "~2.1.3",
"debug": "~2.0.0",
"jade": "~1.6.0"
},
下面是使用Express 3的相同示例,它可以正常工作。
var express = require('express');
var path = require('path');
var app = express();
app.use(express.static(path.join(__dirname, 'public')));
app.get("/", function (req, res) {
res.sendfile('public/main.html');
});
module.exports = app;
以下是从Express 4提供静态html的正确方法。感谢E_net4和NarendraSoni的答案(1和2)。要使它工作,你必须避免使用Express'路由器,即express.Router().get('/'),因为它将调用Express应用程序的模板引擎。
var express = require('express');
var path = require('path');
var app = express();
app.use(express.static( path.join(__dirname, 'public')));
app.get('/', function(req, res) {
res.sendfile('public/main.html');
});
module.exports = app;