我的Node.js站点运行静态html,我的服务器.js文件如下:
const express = require('express');
const app = express();
app.use(serve('/client', {
extensions: ['html']
}));
const server = app.listen(process.env.PORT || 3000, process.env.IP || "0.0.0.0", function(){
console.log('server is running at %s', server.address().port);
});
我希望当我有一个 URL 时:
http://www.example.com/my-file-name
这指向此静态文件:
http://www.example.com/my-file-name.html
但是,我收到以下响应:
Cannot GET /my-file-name
我是否误解了快速静态的工作原理?还是我的服务器.js文件配置错误?
更新:
• 这是我的文件系统的屏幕截图:https://www.dropbox.com/s/fyd818obfbfmdin/Screenshot%202017-05-11%2016.02.46.png?dl=0
• 我删除了 express-static 模块,因为有人指出 Express 已经捆绑了它。
传递给serve()
的路径是要用作提供文件的根目录的本地文件系统路径。如果本地文件系统上不存在作为绝对路径/client
,则应改用正确的(可能是绝对的(路径(例如 __dirname + '/client'
client
是否是与脚本位于同一目录中的子目录(。
robertklep的这个修复程序使它对我有用:
var fs = require('fs');
var publicdir = __dirname + '/public';
app.use(function(req, res, next) {
if (req.path.indexOf('.') === -1) {
var file = publicdir + req.path + '.html';
fs.exists(file, function(exists) {
if (exists)
req.url += '.html';
next();
});
}
else
next();
});
app.use(express.static(publicdir));
链接到我从哪里得到它的帖子:有什么方法可以从没有扩展名的快递中提供静态 html 文件?