【问题标题】:How to serve static files with express.js如何使用 express.js 提供静态文件
【发布时间】:2018-09-21 12:39:30
【问题描述】:

我正在尝试使用 express.js 提供静态文件。

const express = require('express')
const app = express()
app.use(express.static('public'))
app.listen(8888, () => console.log('listening on port 8888!')) 

但我收到错误:拒绝应用来自“http://localhost:8888/static/css/main.5a7f7b3b.css”的样式,因为它的 MIME 类型 ('text/html') 不是受支持的样式表 MIME 类型,并且启用了严格的 MIME 检查。知道我做错了什么吗?

【问题讨论】:

  • 您的 css 文件是否以注释开头?
  • @HamzaFatmi 不,它没有
  • 您是否真的检查了您从 css 请求中返回的内容?我猜你的路径是错误的,服务器正在发回 404 或其他带有 html 的东西。检查您的项目目录中是否确实有一个路径public/static/css,您还可以使用require('path').join(__dirname, 'public') 之类的东西来确保该路径即使不在项目根目录中运行也能正常工作。

标签: node.js express


【解决方案1】:

我可能迟到了,但我刚刚找到答案,在其他任何地方都找不到,所以我会发布它:

您的代码的问题是,它将正确地提供 index.html,但是当它加载链接在 .html 文件中的 .css 文件时,应用程序将通过再次发送 .html 文件来响应。您的浏览器期望获取 .css 文件,但实际上获取的是 .html 文件,这导致了错误。

这将解决它:

const express = require('express')
const path = require('path');
const app = express()
app.use(express.static('public'))
app.get("*", (req, res) => {
    res.sendFile(path.join(__dirname, "./path/To/Your/Dir"));
}); 
app.listen(8888, () => console.log('listening on port 8888!')) 

【讨论】:

    猜你喜欢
    • 2014-11-24
    • 2020-08-03
    • 1970-01-01
    • 2016-11-13
    • 2014-01-12
    • 2013-06-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多