【问题标题】:Yeoman Angular generated site deployed to Firebase hosting continuously reloads scriptsYeoman Angular 生成的站点部署到 Firebase 托管不断重新加载脚本
【发布时间】:2026-01-15 00:25:01
【问题描述】:

我使用 yeoman angular-generator 创建了一个测试网络应用,并将其部署到 Firebase 托管。当我在本地运行应用程序时,它工作正常。部署后,Chrome 开发控制台会报告“警告:尝试多次加载 Angular”。当我使用“firebase serve”在本地运行时,我看到对供应商和脚本 js 文件的 GET 请求无休止地重复。如果我使用“grunt serve”在本地运行,则不会发生这种情况并且站点运行正常。

以下是添加到页面的脚本:

<!-- build:js(.) scripts/vendor.js -->
<!-- bower:js -->
<script src="bower_components/jquery/dist/jquery.js"></script>
<script src="bower_components/angular/angular.js"></script>
<script src="bower_components/bootstrap-sass-official/assets/javascripts/bootstrap.js"></script>
<script src="bower_components/angular-animate/angular-animate.js"></script>
<script src="bower_components/angular-cookies/angular-cookies.js"></script>
<script src="bower_components/angular-messages/angular-messages.js"></script>
<script src="bower_components/angular-resource/angular-resource.js"></script>
<script src="bower_components/angular-route/angular-route.js"></script>
<script src="bower_components/angular-sanitize/angular-sanitize.js"></script>
<script src="bower_components/angular-touch/angular-touch.js"></script>
<script src="bower_components/firebase/firebase.js"></script>
<!-- endbower -->
<!-- endbuild -->

<!-- build:js({.tmp,app}) scripts/scripts.js -->
<script src="scripts/app.js"></script>
<script src="scripts/services/firebaseService.js"></script>
<script src="scripts/controllers/mainview.js"></script>
<script src="scripts/controllers/signinview.js"></script>
<script src="scripts/controllers/signinout.js"></script>
<script src="scripts/directives/signinout.js"></script>
<!-- endbuild -->

这里是由 grunt build 任务生成的脚本标签,其中包括默认包含在 angular-generator 中的 concat、uglify、minify 任务:

<script src="scripts/vendor.566b3c64.js"></script> 
<script src="scripts/scripts.ea0abd4c.js"></script>

当我使用 firebase 运行本地服务器时,我会不断重复以下消息:

127.0.0.1 - - [11/Jul/2016:17:53:51 +0000] "GET /scripts/vendor.58eb8161.js?_=1468259614482 HTTP/1.1" 200 633643 "http://localhost:5000/" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_10_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/51.0.2704.103 Safari/537.36"
127.0.0.1 - - [11/Jul/2016:17:53:51 +0000] "GET /scripts/scripts.3f5216cb.js?_=1468259614483 HTTP/1.1" 200 3300 "http://localhost:5000/" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_10_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/51.0.2704.103 Safari/537.36"
127.0.0.1 - - [11/Jul/2016:17:53:52 +0000] "GET /scripts/vendor.58eb8161.js?_=1468259614484 HTTP/1.1" 200 633643 "http://localhost:5000/" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_10_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/51.0.2704.103 Safari/537.36"
127.0.0.1 - - [11/Jul/2016:17:53:52 +0000] "GET /scripts/scripts.3f5216cb.js?_=1468259614485 HTTP/1.1" 200 3300 "http://localhost:5000/" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_10_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/51.0.2704.103 Safari/537.36"
127.0.0.1 - - [11/Jul/2016:17:53:52 +0000] "GET /scripts/vendor.58eb8161.js?_=1468259614486 HTTP/1.1" 200 633643 "http://localhost:5000/" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_10_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/51.0.2704.103 Safari/537.36"
127.0.0.1 - - [11/Jul/2016:17:53:52 +0000] "GET /scripts/scripts.3f5216cb.js?_=1468259614487 HTTP/1.1" 200 3300 "http://localhost:5000/" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_10_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/51.0.2704.103 Safari/537.36"
127.0.0.1 - - [11/Jul/2016:17:53:52 +0000] "GET /scripts/vendor.58eb8161.js?_=1468259614488 HTTP/1.1" 200 633643 "http://localhost:5000/" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_10_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/51.0.2704.103 Safari/537.36"
127.0.0.1 - - [11/Jul/2016:17:53:52 +0000] "GET /scripts/scripts.3f5216cb.js?_=1468259614489 HTTP/1.1" 200 3300 "http://localhost:5000/" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_10_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/51.0.2704.103 Safari/537.36"
127.0.0.1 - - [11/Jul/2016:17:53:52 +0000] "GET /scripts/vendor.58eb8161.js?_=1468259614490 HTTP/1.1" 200 633643 "http://localhost:5000/" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_10_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/51.0.2704.103 Safari/537.36"
127.0.0.1 - - [11/Jul/2016:17:53:52 +0000] "GET /scripts/scripts.3f5216cb.js?_=1468259614491 HTTP/1.1" 200 3300 "http://localhost:5000/" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_10_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/51.0.2704.103 Safari/537.36"

【问题讨论】:

  • 在您的 HTML sn-p 中,vendor.js 从未包含在内,所以我不确定它会如何重复加载。
  • 在 grunt build 任务将所有内容压缩到 vendor.js 和 script.js 之后,我编辑了我的问题以包含脚本。
  • 我添加了一些关于我在部署站点时看到的内容的详细信息

标签: javascript angularjs yeoman-generator-angular grunt-usemin firebase-hosting


【解决方案1】:

我找到了问题的根源,即使我不明白到底发生了什么。我有一个自定义的角度指令,它为其 templateUrl 引用了一个 html 文件。我相信 yeoman 角度生成器创建的文件夹结构与我设置自定义指令的方式不符。我将模板移动到一个字符串中并将其直接放在自定义指令中,这解决了问题。就像我说的,我不明白为什么。我从头开始,一次添加一个东西,直到我再次看到问题,找到了这个解决方案。

【讨论】: