控制台中的缩小错误“由于其MIME类型('text / html')不可执行而拒绝执行,并且启用了严格的MIME类型检查”

时间:2017-06-09 07:23:32

标签: angularjs google-chrome mime-types aem minify

我需要在'js'文件夹中缩小所有js文件(使用Adobe Experience Manager),该文件夹也包含'angular.min.js'。

尝试这样做时,它会在chrome中抛出错误

  

拒绝执行脚本'angular.min.js',因为它的MIME类型('text / html')不可执行,并且启用了严格的MIME类型检查。

我该如何解决这个问题?

1 个答案:

答案 0 :(得分:3)

我建议您将Angular等第三方库与您自己的客户端库分开。因为您通常不想缩小这些第三方库,但您确实希望缩小自己的客户端库。

示例:

etc/
├── clientlibs/
|   └── myproject/
|       └── vendor/
|           └── angular/
|               ├── angular.min.js
|               ├── .content.xml
|               └── js.txt
└── designs/
    └── myproject/
        └── myclientlib/
            ├── js/
            |   └── myclientlib.js
            ├── .content.xml
            └── js.txt

然后您可以使用以下clientlib定义:

/etc/clientlibs/myproject/vendor/angular/.content.xml

<?xml version="1.0" encoding="UTF-8"?>
<jcr:root xmlns:cq="http://www.day.com/jcr/cq/1.0" xmlns:jcr="http://www.jcp.org/jcr/1.0"
      jcr:primaryType="cq:ClientLibraryFolder"
      categories="[myproject.angular]"
      jsProcessor="[default:none]"/>

jsProcessor="[default:none]"禁用缩小。

/etc/designs/myproject/myclientlib/.content.xml

<?xml version="1.0" encoding="UTF-8"?>
<jcr:root xmlns:cq="http://www.day.com/jcr/cq/1.0" xmlns:jcr="http://www.jcp.org/jcr/1.0"
      jcr:primaryType="cq:ClientLibraryFolder"
      categories="[myproject.myclientlib]"
      jsProcessor="[min:gcc]"/>

jsProcessor="[min:gcc]"可以通过Googles Closure Compiler进行缩小。

您可以轻松地在HTL(以前的Sightly)模板中使用这两个clientlib:

<sly data-sly-use.clientlib="/libs/granite/sightly/templates/clientlib.html">
    <sly data-sly-call="${clientlib.js @ categories='myproject.angular'}"/>
    <sly data-sly-call="${clientlib.js @ categories='myproject.myclientlib'}"/>
</sly>

注意:您可以自由选择clientlib类别名称myproject.angularmyproject.myclientlib。您不必在我的示例中使用这些名称。但我会建议使用某种类型的命名空间,如myproject