我在一个网站上工作,使用Gulp.js来编译和浏览器同步,以保持浏览器与我的更改同步。

Gulp.js任务正确地编译了所有内容,但在网站上,我无法看到任何样式,控制台显示以下错误消息:

拒绝应用样式 “http://localhost:3000/assets/styles/custom-style.css”,因为它 MIME类型('text/html')不是受支持的样式表MIME类型,并且 启用严格的MIME检查。

我真的不明白为什么会这样。

HTML包含如下文件(我很确定这是正确的):

<link rel="stylesheet" type="text/css" href="assets/styles/custom-style.css"/>

现在样式表是Bootstrap和Font Awesome样式的合并(还没有自定义)。

路径也是正确的,因为这是文件夹结构:

index.html
assets
|-styles
  |-custom-style.css

但是我总是得到错误。

会是什么呢?这是gulp/browsersync的一些东西(也许是一个设置?)


当前回答

我遇到过这个问题,在向Azure B2C用户流添加自定义外观时遇到了同样的问题。我发现HTML页面引用的根是../oauth/v2(即oauth服务器路径)而不是我的存储bob的路径。

使用页面的完整URL为我解决了这个问题。

其他回答

导致此错误的另一个原因可能是CSS文件权限不正确。在我的例子中,文件无法访问,因为所有权已更改为根用户——这是由于以根用户推送Git文件造成的。

您可以打开谷歌Chrome工具,选择网络选项卡,重新加载您的页面,找到CSS的文件请求,并寻找它在文件中有什么。

也许你在合并文件中的两个库时做错了什么,包括一些不适合CSS的字符或头文件?

检查是否启用或禁用了压缩。如果你使用了它,或者有人启用了它,那么app.use(express.static(xxx))将不起作用。确保您的服务器允许压缩。

当我将Brotli和压缩插件添加到Webpack中时,我开始看到类似的错误。然后,您的服务器也需要支持这种类型的内容压缩。

如果你正在使用Express.js,那么下面的代码应该会有所帮助:

app.use(url, expressStaticGzip(dir, gzipOptions)

模块名为:express-static-gzip

我的设置是:

const gzipOptions = {
  enableBrotli: true,
  customCompressions: [{
  encodingName: 'deflate',
  fileExtension: 'zz'
 }],
 orderPreference: ['br']
}

当你在React或Angular中使用命令行工具时,这个问题就会发生,所以关键是要从这些工具中复制整个最终版本,因为它们会初始化自己的轻服务器,这会混淆你的url和你创建的后端服务器……

将整个构建文件夹转储到后端服务器项目的资产文件夹中,并从后端服务器引用它们,而不是从Angular或React附带的服务器引用。否则,您将使用它作为来自某个API服务器的前端。

我试着重启我的Windows电脑,重新安装“npm I”。

这对我很管用。