出现奇怪的注入器错误 - 未知提供者:bProvider <- b

Getting a strange injector error - Unknown provider: bProvider <- b

编译我的代码后,我遇到了一个我无法识别的奇怪错误。通常在出现 $injector 错误时,我会得到一个特定的模块描述,例如 $uibModal 或 $resource 等

有了这个我就得到了这个 bProvider <- b.

有谁知道我如何解决这个问题,或者谁能告诉我这是指什么?

我正在使用 grunt 编译和使用 uglify...

vendor.56b5173c.js:5 Error: [$injector:unpr] Unknown provider: bProvider <- b
http://errors.angularjs.org/1.5.8/$injector/unpr?p0=bProvider%20%3C-%20b
    at vendor.56b5173c.js:3
    at vendor.56b5173c.js:4
    at Object.d [as get] (vendor.56b5173c.js:4)
    at vendor.56b5173c.js:4
    at d (vendor.56b5173c.js:4)
    at e (vendor.56b5173c.js:4)
    at Object.g [as invoke] (vendor.56b5173c.js:4)
    at j.instance (vendor.56b5173c.js:5)
    at ui-bootstrap-tpls.min.js:8
    at g (vendor.56b5173c.js:5)

这是我的模态函数的样子:

   var modalInstance = $uibModal.open({
        animation: true,
        backdrop: 'static',
        keyboard: false,
        templateUrl: 'questionsModal.html',
        controller: function($scope, $uibModalInstance, SweetAlert) {

        $scope.close = function() {
            //self.showingExpenses = false;
            $uibModalInstance.close();
            videoId.play();
        };
    }
});

缩小js文件时出现错误:

缩小期间发生的事情是 另一个服务参数被缩小为 'b'(或其他东西)。

Angular 会尝试寻找 'b' 服务,当失败时它会尝试寻找 'bProvider' 来提供服务。

由于这些都没有声明,您将收到 "Unknown provider" 错误。

要解决此问题,您应该将所有依赖项更改为字符串:

应该避免这种语法:

angular('myModule').service('myService', function(anotherService) {
  // ...
});

应遵循:

angular('myModule').service('myService', ['anotherService', function(anotherService) {
        // ...
}]);

这样当缩小完成时,它不会弄乱依赖注入。

这适用于任何声明,而不仅仅是服务。

this is the source of this answer