Javascript 如何强制express使用';提供没有文件扩展名的静态html文档;text/html';内容类型

Javascript 如何强制express使用';提供没有文件扩展名的静态html文档;text/html';内容类型,javascript,node.js,Javascript,Node.js,我用编码为“utf-8”的html文件创建了一个静态生成的站点 快递服务 它们驻留在一个静态目录中 我在保存网页之前省略了网页的文件扩展名后发现 当在浏览器中打开网页时,网页会被下载,而不是像通常的html文档那样呈现 直到现在,我还找不到任何关于这个主题的相关信息。静态模块接受一个setHeaders函数,该函数可以动态地将头添加到它所服务的任何静态文件中 您可以测试文件是否没有文件扩展名,并动态添加标头: const express = require('express') const ap

我用编码为“utf-8”的html文件创建了一个静态生成的站点

快递服务 它们驻留在一个静态目录中

我在保存网页之前省略了网页的文件扩展名后发现

当在浏览器中打开网页时,网页会被下载,而不是像通常的html文档那样呈现


直到现在,我还找不到任何关于这个主题的相关信息。

静态模块接受一个
setHeaders
函数,该函数可以动态地将头添加到它所服务的任何静态文件中

您可以测试文件是否没有文件扩展名,并动态添加标头:

const express = require('express')
const app = express()
const port = 3000

app.get('/', (req, res) => res.send('Hello World!'))

// This is a bit quick and dirty, but should be suitable for most cases
const noFileExtension = /[^.]{5}$/;

const staticOptions = {
    setHeaders: (res, path, stat) => { 
        if (path.match(noFileExtension)) {
            res.set('Content-Type', "text/html");
        }
    }
}
app.use(express.static('public', staticOptions));

app.listen(port, () => console.log(`Example app listening on port ${port}!`))

一种非常简陋的方法是在静态选项中设置标题。现在,您可以添加if子句,说明路径是否没有扩展等,但基本上这将起作用:

const express = require('express');
const app = express();

app.use(express.static(<your directory>, {
  setHeaders: function (res, path, stat) {
    res.set('Content-Type', 'text/html');
  }
}))

app.listen(8080);
const express=require('express');
常量app=express();
应用程序使用(快速静态({
setHeaders:函数(res、path、stat){
res.set('Content-Type','text/html');
}
}))
app.listen(8080);

那么您想使用无扩展文件作为html?这是否回答了您的问题?确切地说,Aritra ChakrabortyI尚未测试您的解决方案,但我假设extensions选项告诉express通过default@JOHNSWANA-没有。如果URL是
/static/example
并且没有
example
文件,它会告诉express查找
example.html