【问题标题】:Uncaught Error: $injector:modulerr; works locally but not on server未捕获的错误:$injector:modulerr;在本地工作,但不在服务器上
【发布时间】:2017-11-06 06:56:22
【问题描述】:

以下代码在我的本地开发环境中运行良好,但是当我将解决方案托管在服务器上时出现以下错误,使用未缩小的 js 后出现以下错误:

angular.js:66 Uncaught Error: [$injector:modulerr] Failed to instantiate module app due to:
    ReferenceError: shallowCopy is not defined

以下是相关代码,我的 index.php 文件,包括所有文件和注入我的指令的 app.js 文件:

index.php:

<!-- bootstrap/jquery -->
<meta name="viewport" content="width=device-width; initial-scale=1.0; maximum-scale=1.0; user-scalable=0;">

<script src="js/jquery/jquery-3.1.1.min.js"></script>
<script src="js/jquery/jquery-ui.min.js"></script>
<link rel="stylesheet" href="styles/jquery/jquery-ui.min.css" />

<link rel="stylesheet" href="styles/bootstrap-3.3.7-dist/css/bootstrap.css" />
<script src="styles/bootstrap-3.3.7-dist/js/bootstrap.min.js"></script>
<script src="plugins/Bootstrap-3-Typeahead-master/bootstrap3-typeahead.min.js"></script>
<!-- end bootstrap/jquery -->
<!-- custom css -->
<link rel="stylesheet" href="styles/styles.css" />
<!-- end custom css -->
<!-- favicon -->
<link rel='shortcut icon' type='image/x-icon' href='media/images/favicon.ico' />
<!-- end favicon -->

<!-- custom js -->
<script src="js/main.js"></script>
<!-- end custom js -->

<!-- angularjs -->
<script src="js/angularjs/angular.min.js"></script>
<script src="js/angularjs/angular-route.min.js"></script>
<script src="js/angularjs/angular-sanitize.js"></script>

<script src="js/app.js"></script>
<script src="js/login/login.js"></script>
<script src="js/questionnaire/questionnaire.js"></script>
<script src="js/study/study.js"></script>
<script src="js/result/result.js"></script>
<!-- end angularjs -->
<div class="row" ng-app="app" >
    <div ng-view>
    </div>
</div>

app.js:

// app.js
(function () {

  "use strict";

  // Creating the Module
  angular.module("app", ["ngRoute", "ngSanitize"])
    .config(function ($routeProvider) {
        //$location.path('/questionnaire'); //logged in already, session still active

      $routeProvider.when("/", {
        controller: "loginController",
        controllerAs: "vm",
        templateUrl: "views/login.php"
      });

      $routeProvider.when("/questionnaire/", {
        controller: "questionnaireController",
        controllerAs: "vm",
        templateUrl: "views/questionnaire.php"
      });

      $routeProvider.when("/questionnaire/:survey", {
        controller: "questionnaireController",
        controllerAs: "vm",
        templateUrl: "views/questionnaire.php"
      });

      $routeProvider.when("/study/:studyid", {
        controller: "studyController",
        controllerAs: "vm",
        templateUrl: "views/study.php"
      });

      $routeProvider.when("/result/", {
        controller: "resultController",
        controllerAs: "vm",
        templateUrl: "views/result.php"
      });

      $routeProvider.otherwise({ redirectTo: "/" });

    });

})();

【问题讨论】:

  • 使用未缩小版的 AngularJS、Router 等可能会给你一个更有帮助的错误信息。试一试。
  • @Olezt 使用未缩小的 js 后,我现在收到以下错误。 angular.js:66 Uncaught Error: [$injector:modulerr] 无法实例化模块应用程序,原因是:ReferenceError: shallowCopy 未定义

标签: php angularjs angular-ui-router angularjs-injector


【解决方案1】:

可能是js缩小的问题,参考https://docs.angularjs.org/guide/di#implicit-annotation

尝试以下操作,注意 ['$routeProvider...:

用这个替换你的代码

(function () {

  "use strict";

angular.module("app", ["ngRoute", "ngSanitize"])
    .config(['$routeProvider', function ($routeProvider) {
        //$location.path('/questionnaire'); //logged in already, session still active

  $routeProvider.when("/", {
    controller: "loginController",
    controllerAs: "vm",
    templateUrl: "views/login.php"
  });

  $routeProvider.when("/questionnaire/", {
    controller: "questionnaireController",
    controllerAs: "vm",
    templateUrl: "views/questionnaire.php"
  });

  $routeProvider.when("/questionnaire/:survey", {
    controller: "questionnaireController",
    controllerAs: "vm",
    templateUrl: "views/questionnaire.php"
  });

  $routeProvider.when("/study/:studyid", {
    controller: "studyController",
    controllerAs: "vm",
    templateUrl: "views/study.php"
  });

  $routeProvider.when("/result/", {
    controller: "resultController",
    controllerAs: "vm",
    templateUrl: "views/result.php"
  });

  $routeProvider.otherwise({ redirectTo: "/" });

}]);

})();

【讨论】:

  • 感谢您的回复,使用上面的代码处理我的 app.js 文件时,我仍然遇到同样的错误。
  • 嗯,我很确定这是关于缩小、压缩、丑化或类似的东西。上面的代码我唯一认为可能的就是这样。你应该在你的项目中寻找其他地方并在这里做同样的事情
  • 我不得不使用缩小的路线和未缩小的 angularjs。谢谢大家的帮助!
【解决方案2】:

我遇到了同样的问题。

我通过将我最近添加的插件包含移动到我的底部来解决它 bundles.Add(我的 appstart 中的新 ScriptBundle

此更改对我有用,它在本地运行良好,但在实时环境中崩溃了。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-09-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-09-28
    相关资源
    最近更新 更多