javascript - 我如何强制 Express 提供没有文件扩展名且内容类型为 'text/html' 的静态 html 文档

标签 javascript node.js

我用编码为“utf-8”的 html 文件制作了一个静态生成的网站

由 express 送达 它们驻留在静态目录中

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

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

到目前为止找不到任何有关该主题的相关信息。

最佳答案

静态模块接受一个setHeaders函数,该函数可以动态地将 header 添加到它提供的任何静态文件中。

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

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}!`))

关于javascript - 我如何强制 Express 提供没有文件扩展名且内容类型为 'text/html' 的静态 html 文档,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59813910/

相关文章:

javascript - JavaScript 中 Go 的无条件切换最接近的等效项是什么?

javascript - 原型(prototype)继承 - 访问原型(prototype)属性中的 Prop

javascript - 即使 api 失败,fetch `then()` 仍在执行

node.js - 使用nodemailer发送电子邮件不适用于互联网服务,但适用于本地服务器

javascript - Mongoose 错误: The `uri` parameter to `openUri()` must be a string

javascript - 为什么 event.clientX 在 firefox 中对于 dragend 事件错误地显示为 0?

javascript - 是否有一个 created() 用于自动调度 vuex Action

node.js - 如何在 Windows 上修复 'npm does not support Node.js v11.14.0 error'?

javascript - 使用 LoDash 对时间序列数据进行分组和求和

node.js - Node.js 中的颜色 Winston 记录器 v3.x