javascript 将jQuery插件导入Angular 2+拒绝执行脚本,因为其MIME类型('text/html')不可执行

r8xiu3jd  于 2023-01-24  发布在  Java
关注(0)|答案(3)|浏览(186)

我需要加载一个JavaScript(jQuery插件)在一个HTML文件。但它似乎没有工作。这是运行在Angular-CLI服务器(ng serve)这里的HTML。

<!doctype html>
<html>
<head>
  <meta charset="utf-8">
  <title>Test</title>
  <base href="/">

  <script
  src="https://code.jquery.com/jquery-3.3.1.min.js"
  integrity="sha256-FgpCb/KJQlLNfOu91ta32o/NMZxltwRo8QtmkMRdAu8="
  crossorigin="anonymous"></script>

  <script src="./test.js" type="text/javascript"></script>

  <meta name="viewport" content="width=device-width, initial-scale=1">
  <link rel="icon" type="image/x-icon" href="favicon.ico">
</head>
<body>
  <app-root>Loading...</app-root>
</body>
</html>

我得到这个错误:
拒绝执行"http://localhost:8080/test.js"中的脚本,因为其MIME类型("text/html")不可执行,并且启用了严格的MIME类型检查。
我找到了this question,其中的解决方案似乎是纠正type属性,但这并没有解决我的问题,我尝试了text/javascriptapplication/javascript
我需要在这里做什么?
编辑:网络控制台显示脚本的404错误。表示请求没有可用的响应数据。内容类型为text/html; charset=utf-8
注意:我最初发布这个示例时,它比我的实际代码要小得多,因为我不认为它与Angular CLI服务器有关。可能是这样,所以我将示例还原为我的实际代码。

llmtgqce

llmtgqce1#

尝试将js脚本放到src/assets文件夹中,然后开发服务器应该会提供正确的mime类型
然后按如下方式引用

<script src="/assets/scripts/test.js" type="text/javascript"></script>

您可以将这些文件添加到angular-cli.json(如果使用angular 6,则为angular.json)的“scripts”属性中,而不是将jquery和脚本包含在index.html中。

"scripts":
 [
      //include jQuery here, e.g. if installed with npm
      "../node_modules/jquery/dist/jquery.min.js" ,
      "assets/scripts/test.js"
 ]

注意:修改.angular-cli.jsonangular.json文件后,不要忘记重新启动ng serve

fjaof16o

fjaof16o2#

我遇到了类似的问题

并通过index.html文件中的简单更改解决

<base href="./"> // remove dot (.) and your app will execute scripts
lsmd5eda

lsmd5eda3#

非常有趣,运行一个旧的Angular项目几年后,它是由于<base href="/">引起的,更改为<base href="./">修复了错误。

相关问题