使用Yeoman应用程序中的Grunt Build缩小后出现Angular"Unknown Provider"错误

 奋怒的小超_656 发布于 2023-02-13 12:36

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

grunt buildgrunt server这两个最初的罚款.但经过几天的开发使用后grunt server,我发现grunt build已完全停止工作.

我修复了一些不同的问题.最大的一点就是我不得不完全放弃Slim用于我的索引文件并使用直接HTML,因为grunt build在发布时,莫名其妙地删除了80%的索引文件/dist.

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

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

问题似乎在于uglify.我认为这可能与此处报道的问题相同,但我并不十分确定.我尝试了许多解决方案,但唯一对我有用的是从我的coffeescript手动生成干净的js文件,将文件复制到其中/dist,然后将路径写入dist/index.html.

显然这不是最优的.我确信在Grunt中有一个更简洁的方法(可能完全从构建过程中删除缩小,就像其他用户在上面的链接中所做的那样),但我是新手并且尚未弄清楚如何要做到这一点.无论哪种方式,它都是一种解决方法.

我的Gruntfile非常基本:我只在默认文件中添加了grunt-connect-proxy,grunt-contrib-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.)

如果有人有任何建议,我会很感激.

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

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

    来自Angular docs:关于缩小的注释

    2023-02-13 12:38 回答
撰写答案
今天,你开发时遇到什么问题呢?
立即提问
热门标签
PHP1.CN | 中国最专业的PHP中文社区 | PNG素材下载 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有