angular 发布网站时出现未知提供商错误

angular unknown provider error when published site

我开发了一个小应用程序,现在我想第一次将它发布到 Azure。

这是我第一次在任何项目中使用 angular,我遇到了一些问题。 我收到此错误:

错误:[$injector:unpr] 未知提供者:sProvider <- s <- MapController

这是我的控制器:

 var app = angular.module("TravelPlanner", []);


var mapController = function ($scope, $http) {
    lots of functions....

 }


   app.controller("MapController", mapController);

这是我的布局页面:

 <head>
<meta charset="utf-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>@ViewBag.Title - My ASP.NET Application</title>
@Styles.Render("~/Content/css")
@Styles.Render("~/Content/kendo/css")

@Scripts.Render("~/bundles/modernizr")
@Scripts.Render("~/bundles/jquery")
<script src="https://maps.googleapis.com/maps/api/js?v=3.exp&key=AIzaSyASli52h7eL3W1CSNtTrl-S71zDFATqbDg&libraries=places"></script>
@Scripts.Render("~/bundles/bootstrap")
    @Scripts.Render("~/bundles/kendo")
<script src="~/ckeditor/ckeditor.js"></script>



@*<script src="//cdn.tinymce.com/4/tinymce.min.js"></script>
<script src="~/Scripts/plugin.min.js"></script>*@
</head>
<body ng-app="TravelPlanner">
   <div class="container body-content" ng-controller="MapController">
             @RenderBody()
    </div>


@RenderSection("scripts", required: false)
</body>

为什么我会收到此 angular 错误?

** 编辑 ** 这是我加载脚本的包。

         bundles.Add(new ScriptBundle("~/bundles/bootstrap").Include(
                  "~/Scripts/bootstrap.js",
                  "~/Scripts/respond.js",
                  "~/Scripts/Angular.js",
                   "~/Scripts/DropZone.js",
                  "~/Content/Scripts/gmaps.js",
                  "~/Content/Scripts/jquery.geocomplete.min.js",
                  "~/Scripts/jquery-ui-1.11.4.min.js",
                  "~/Content/Scripts/MapController.js",
                  "~/Content/Scripts/sweetalert.min.js"
                 ));

mapcontroller.js 是我所有 angular/js 代码所在的位置。 (不知道为什么我没有更改包的名称,估计是我懒)

您无法使用 "standard" ASP.NET 捆绑包最小化 AngularJS 应用程序。有两种选择:

  1. 不要最小化 AngularJS app 文件,只从中删除空格和注释(有 nuget 包可以做到这一点)。
  2. 使用显式注入器注释,并使用标准技术最小化 .js 文件,对于您的控制器,您必须更改:

    app.controller("MapController", mapController);

进入:

app.controller("MapController", ['$http', mapController]);

可以找到有关注射器的更多信息in official documentation

您需要为 mapController 注释您的依赖关系

var mapController = ['$scope', '$http', function ($scope, $http) {
    lots of functions....

 }];

在此处查看此 link:https://docs.angularjs.org/guide/di#dependency-annotation