未知提供商:捆绑后$resourceProvider

Unknown provider: $resourceProvider after bundle

本文关键字:resourceProvider 提供商 未知      更新时间:2023-09-26

我有 af MVC 4.5 项目和 angularjs。我已经对控制器和工厂进行了捆绑和缩小。我已经阅读了有关使角度控制器和工厂缩小安全的信息,但是我收到此错误并且找不到问题:

未知提供商:$resourceProvider

模块:

var app = angular.module("seducApp", []);
app.$inject = ['ngRoute', 'ngResource', 'ngSanitize', 'ngAnimate', 'ui.tinymce', 'mgcrea.ngStrap.tooltip',
'mgcrea.ngStrap.datepicker', 'mgcrea.ngStrap.alert', 'ui.select', 'uuid4', 'rt.popup', 'angular-md5', 'mgcrea.ngStrap.button',
'ui.bootstrap.tabs', 'mgcrea.ngStrap.timepicker', 'naif.base64', 'base64', 'angular-smilies', 'angular-google-adsense',
'angularFileUpload', 'angular.directives-round-progress', 'numericbinding', 'ngImgCrop', 'ui.tree', 'timer',
'$httpProviderConfig', '$compileProviderConfig', '$locationProviderConfig', 'uiSelectConfig', 'datetimeFilter',
'cutFilter', 'groupFilter', 'partitionFilter', 'aDisabledDirective'];

工厂:

app.factory('siteRepository', function ($resource, $http) {
   return {
        checkSiteStatus: function () {
            return $resource('/Home/GetSiteStatus').query();
        },
        getSiteStatus: function () { 
            return $http.get('/Home/GetSiteStatus') 
        },        
        getSiteChangeLog: function () {
            return $http.get('/Home/GetSiteChangeLog')
        }
    }
});

调试在 web.config 中设置为 true,那么我不应该获得工厂的缩小版本。

我已经尝试了很多东西,但没有解决方案:(

删除app.$inject语句。相反,传递依赖项数组。观察以下简化的演示,该演示演示了一点...

var mod = angular.module('mod', []);
mod.factory('modFactory', function() {
    return {
        'woo': function woo() {
            console.log('woah!');
        }
    }
});
// -----------------------------------------------------
var app = angular.module('app', ['mod']);
app.controller('ctrl', function(modFactory) {
    modFactory.woo();
});

上述方法有效,而以下内容将失败...

var app = angular.module('app', []);
app.$inject = ['mod'];

未知提供程序: modFactoryProvider

JSFiddle Link - demo


快速

解决您的问题包括将app定义更改为以下内容...

var app = angular.module('seducApp', ['ngRoute', 'ngResource', 'ngSanitize', 'ngAnimate', 'ui.tinymce', 'mgcrea.ngStrap.tooltip',
'mgcrea.ngStrap.datepicker', 'mgcrea.ngStrap.alert', 'ui.select', 'uuid4', 'rt.popup', 'angular-md5', 'mgcrea.ngStrap.button',
'ui.bootstrap.tabs', 'mgcrea.ngStrap.timepicker', 'naif.base64', 'base64', 'angular-smilies', 'angular-google-adsense',
'angularFileUpload', 'angular.directives-round-progress', 'numericbinding', 'ngImgCrop', 'ui.tree', 'timer',
'$httpProviderConfig', '$compileProviderConfig', '$locationProviderConfig', 'uiSelectConfig', 'datetimeFilter',
'cutFilter', 'groupFilter', 'partitionFilter', 'aDisabledDirective']);

查看 Angular DI 文档以获取有关该主题的更多详细信息

首先你能试试这段代码吗?

app.factory('siteRepository',['$resource','$http', function ($resource, $http) {
   return {
    checkSiteStatus: function () {
        return $resource('/Home/GetSiteStatus').query();
    },
    getSiteStatus: function () { 
        return $http.get('/Home/GetSiteStatus') 
    },        
    getSiteChangeLog: function () {
        return $http.get('/Home/GetSiteChangeLog')
    }
  }
}]);

如果这有效,那么您在缩小和注入方面会遇到经典的麻烦。

我建议您查看 https://github.com/olov/ng-annotate 或重写应用程序中的所有注入语法(使用依赖项名称数组)

让我知道它是否有帮助和/或您是否需要更多帮助。

相关文章:
  • 没有找到相关文章