gpt4 book ai didi

node.js - 从 Express 4 提供静态 html 文件

转载 作者:太空宇宙 更新时间:2023-11-04 02:50:56 25 4
gpt4 key购买 nike

我想使用 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 的回答( 12 )。为了使其正常工作,您必须避免使用 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;

最佳答案

res.render 将调用 Express 应用程序的模板引擎,但您尚未指定。

Express 在响应对象中提供了一个 sendFile 函数,它允许您发送静态页面文件,而无需通过模板引擎。

var router = express.Router();

router.get('/', function(error, res) {
var options = {root: __dirname};
res.sendFile('something.txt', options, function(error) {
if (error) {
res.writeHead(500);
res.end();
}
});
});

您的代码中还有其他看起来可疑的内容。您已经创建了一个路由器,但没有显示它包含在应用程序中的位置。可能会发生一些依赖模板引擎的其他中间件正在拦截该请求。

app.use('/', router);

另请注意,在这种情况下您不需要创建新路由器。应用程序的行为已经像路由器一样。

关于node.js - 从 Express 4 提供静态 html 文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27547865/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com