我在一个网站上工作,使用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的一些东西(也许是一个设置?)


当前回答

在我的例子中,当我实时部署包时,我将它从公共HTML文件夹中取出。这是有原因的。

但显然一个严格的MIME类型检查已经被激活,我不太确定它是在我这边还是由我托管的公司。

但是当我将样式化文件夹移动到index.php文件所在的目录中时,我就不再得到错误,样式化被完美地激活了。

其他回答

我在EJS和Node.js中也遇到了同样的问题。

我已经像这样设置了我的视图引擎的公共文件夹:

app.use('/public', express.static(process.cwd() + '/public'));

app.set('view engine', 'ejs');

我的目录结构是这样的

public
|
-assets
 |
  --CSS
  |---style.css

我试图链接我的样式。css在EJS头像这样

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

添加公共解决了问题(确保检查网络选项卡)

<link href="/public/assets/css/style.css" rel="stylesheet" type="text/css">

我只是在Angular 6构建配置的Angular .json中的样式部分引用了CSS文件(在我的例子中是Angular主题):

这并没有回答问题,但它可能是一个合适的变通方法,就像对我来说一样。

对于其他使用Angular-CLI并发布到web服务器上的子文件夹的情况,请检查以下答案:

当你部署到域中的非根路径时,你需要手动更新dist/index.html中的<base href="/">标记。

在这种情况下,您将需要更新到<base href="/sub-folder/">

https://github.com/angular/angular-cli/issues/1080

我在Angular中遇到了这个错误。我解决这个问题的方法是在我的link元素上放一个ngIf,这样它就不会出现在DOM中,直到我的动态URL被填充。

这可能和问题有点不相关,但我最终在这里寻找答案。

<link *ngIf="cssUrl" rel="stylesheet" type="text/css" [href]="sanitizer.bypassSecurityTrustResourceUrl(cssUrl)">

删除rel="stylesheet",添加type="text/html"。所以它看起来是这样的

<link href="styles.css" type="text/html" />