表示静态未按预期工作



我的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 文件?

最新更新