【问题标题】:Angular / grunt failed to load templateAngular / grunt 无法加载模板
【发布时间】:2016-02-14 23:02:18
【问题描述】:

我最近在我的 yeoman 应用程序中引入了 angular 指令用于模板化,如果我 grunt 为应用程序的正常开发版本提供服务,一切正常,但是当我使用 grunt 构建“dist”文件夹并提供服务时,html我的应用程序的指令未出现在页面上,控制台记录此错误:

Failed to load resource: the server responded with a status of 404 (Not Found)

vendor.6e8f248d.js:5 Error: [$compile:tpload] Failed to load template: 
/views/tabdir.html (HTTP status: 404 Not Found)

我读到依赖注入需要采用数组格式,这样缩小才不会弄乱它,所以我对所有控制器都这样做了,但同样的问题仍然存在。例如:

angular.module('MainApp').controller('MainCtrl', ['$scope', 'inputBlur', function ($scope, inputBlur) {

}]);

是什么导致我的指令不能被 grunt 正确加载?

【问题讨论】:

  • 听起来您使用 Grunt 的构建过程配置不正确。您是否使用html2js 将 HTML 模板正确包含在 dev 中,但可能没有将它们连接到您的 dist 脚本?在 dev 和 dist 中交付 HTML 文件的方式有什么区别?我很确定这与缩小错误无关。
  • 我没听说过 html2js,我使用的是 yeoman 配置的默认设置。这会对我有帮助吗?我应该寻找 dev/dist 之间的哪些差异?
  • 我不知道 yeoman 使用的默认设置是什么,抱歉。您可以检查的一件事是在开发模式下运行时是否对 HTML 模板发出请求(使用开发人员工具的网络选项卡)。还要检查提供的 JS 文件列表(或它们的内容)是否在 dev 和 dist 之间相同。
  • dev/dist 网络选项卡的不同之处在于 dev 没有缩小而 dist 是缩小。 dist 的网络选项卡显示未缩小的 html 指令的 GET 请求失败,就好像它试图抓取不再存在的未缩小文件一样。这可能是问题吗?
  • 听起来确实像 dev JS 文件包含作为 JS 的 HTML 模板。在 dev 和 dist 文件中搜索 $templateCache.put( - 如果我是对的,那么一大堆将在 dev 文件中,而不是在 dist 文件中。或者,如果它实际上是在开发模式下从服务器获取 HTML 部分,那么您可能需要考虑使用 html2js 之类的东西将部分包含在 dist JS 文件中,这样您就不必分发 HTML 文件分开。

标签: javascript html angularjs gruntjs yeoman


【解决方案1】:

我遇到了类似的问题。删除指令的templateUrl 值中的第一个前斜杠/,应该是这样的:

templateUrl:'views/tabdir.html'

【讨论】:

  • 为我工作所以检查你的模板网址
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多