我的_Layout.cshtml中的当前设置我有标准脚本标记,文件路径指向一些angularjs文件,如此。
<script src="~/Scripts/angularjs/Controller/MyController.js"></script>...(plus a few more)
因此,我没有明确地将所有这些文件放在_layout文件中,而是将它们捆绑在一起。所以我在BundleConfig.cs中这样做了。
bundles.Add(new ScriptBundle("~/Scripts").Include(
"~/angularjs/Factory/authService.js",
"~/angularjs/Controller/MyController.js"));
一切都在建立。但是,当我运行它时,浏览器控制台窗口给我一个角度错误,说它无法找到我的authService.js文件。官方错误如下。
未捕获错误:[$ injector:unpr] http://errors.angularjs.org/1.5.8/ $ injector / unpr?p0 = authServiceProvider%20%3C-%20authService
所以我的问题是为什么当我捆绑我的脚本时它没有看到authService文件。请记住,如果我明确地称它,我的角度和网页工作正常,没有错误。 (我也搞乱了我在捆绑中调用它们的顺序,但仍然无法使网页正常工作)。
非常感谢任何帮助。
编辑:这里提供一些角度代码是我的服务。
(function () {
var authService = function ($http, $q, localStorageService) {
/*bunch of code*/
};
var module = angular.module("mainApp");
module.factory("authService", authService);
}());
所以我做了以下更改,但我仍然得到相同的错误以及Web浏览器中的另一个错误&#34; ~Scripts / angularjs&#34;回复403错误。
(function () {
var module = angular.module("mainApp");
module.factory("authService", authService);
authService.$inject("$http", "$q", "localStorageService");
var authService = function ($http, $q, localStorageService) {
/*my code*/
};
}());
最终解决方案: 为了澄清,我将发布我所做的工作以使其发挥作用。正如@Tommaso Sebastianelli所指出的那样,关键在于传递[]中的行module.factory的依赖关系。非常感谢您的迅速回应。
(function () {
var authService = function ($http, $q, localStorageService) {
/*my code here*/
};
var module = angular.module("mainApp");
module.factory("authService", ["$http", "$q","localStorageService", authService]);
}());
答案 0 :(得分:2)
您的角度服务中是否可能存在非显式依赖注入?例如:
yourapp.service('authService', function(dependancy1, dependancy2, etc){
});
在最小化和捆绑模块时,这种错误多次发生在我身上。 如果是这种情况,请修改您的代码:
yourapp.service('authService', ['dependancy1', 'dependancy2', '...',
function (dependancy1, dependancy2, etc){
}]);
最佳选择:
yourapp.service('authService', authService);
authService.$inject = ['dependency1', 'dependency2', '...'];
function authService(){
//code here
}