在Yeoman应用程序中使用咕噜声构建缩小后的角度"Unknown Provider"错误



我在使用Coffee和Slim的Yeoman生成的Angular应用程序上使用grunt build时遇到问题,所有库都是最新的。(该应用程序几天前刚刚用最新的生成器生成。)

CCD_ 2和CCD_。但是在使用grunt server进行了几天的开发之后,我发现grunt build已经完全停止工作了。

我解决了一些不同的问题。最大的一次是,我不得不完全放弃Slim来创建索引文件,而使用纯HTML,因为grunt build在发布到/dist时莫名其妙地删除了80%的索引文件。

不幸的是,在我几乎解决了所有问题后,我开始在我的一个Angular指令中出现这个错误:

未捕获错误:未知提供程序:aProvider<-a

这个问题似乎很棘手。我认为这可能是这里报道的同样的问题,但我不完全确定。我尝试了很多解决方案,但唯一对我有效的是从我的coffeescript手动生成干净的js文件,将文件复制到/dist中,然后将路径写入dist/index.html中。

显然,这不是最佳选择。我相信在Grunt中有一种更整洁的方法可以做到这一点(可能是像其他用户在上面的链接中所做的那样,从构建过程中完全删除缩小),但我是新手,还没有想好怎么做。不管怎样,这都是一个变通办法。

我的Gruntfile非常基本:我只在默认文件中添加了grunt-connect代理、grunt-controb-sass和grunt-slim。事实上,我试图引进一个干净的、新生成的Gruntfile,但它并没有做得更好。

下面是失败的指令。错误实际上出现在控制器的第一行$scope.showInput = false中。令人沮丧的是,grunt server中的一切都很好。然而,当我建造的那一刻,它就完全崩溃了。

myModule.directive "editable", ->
  controller = ($scope) ->
    $scope.showInput = false
    $scope.saveContent = -> 
      $scope.toggleContent()
      $scope.save()
  linker = (scope, element, attrs) ->    
    scope.toggleContent = -> 
      scope.showInput = not scope.showInput
      setTimeout((-> element.find('input').focus()), 100)
  return DDO = 
    restrict: 'E'
    controller: controller
    link: linker
    templateUrl: "template/editable.html"
    scope:
      editableType: "@"
      text: "="
      placeholder: "@"
      save: "&"

(这个模板其实并不重要。它只是有一个ng-switch,可以使用$scope.showInput进行切换。)

如果有人有任何建议,我将不胜感激。

这听起来像是Angular依赖依赖注入参数名称的常见问题。在传递依赖项时,请确保将依赖项名称作为字符串包含在内,以便Angular知道缩小后要注入什么(因为字符串值在缩小过程中不会更改)。

myApp.controller('myCtrl', ['$scope', '$http', function($scope, $http) {
}])

来自Angular文档:关于缩小的说明

最新更新