Failed to instantiate module [module name] due to: Error: [$injector:modulerr]

Failed to instantiate module [module name] due to: Error: [$injector:modulerr]

我在将 moment.js 注入我的模块 myApp 时遇到问题。我遵循了 https://github.com/urish/angular-moment and https://www.npmjs.com/package/angular-momentjs 的文档,但无济于事。阅读其他类似的问题和答案,很可能是由于语法不正确,但我看不到。有什么想法吗?

<script src="https://cdnjs.cloudflare.com/ajax/libs/angular.js/1.6.1/angular-route.min.js"></script>
<script src="scripts/moment.js"></script>
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.6.4/angular.min.js"></script>
<script src="scripts/angular-moment.js"></script>
<script src="scripts/app.js"></script>

<main ng-app="myApp" ng-controller="appCtrl">
    <div class="container">             
        <section class="ng-view">

        </section>
    </div>
</main>

var app = angular.module('myApp', ['ngRoute', 'angularMoment']);

app.controller('transCtrl', ['$scope', '$http', 'moment', function($scope, $http, moment){
    $http.get('../json/transactions.json')
    .then(function(response){
        $scope.transaction = response.data.transactions;
    }, function(errResponse){
        alert('error');   
    });

    $scope.sortType     = 'transId'; // set the default sort type
    $scope.sortReverse  = false;  // set the default sort order
    $scope.searchTrans   = '';     // set the default search/filter term

    $scope.date = new moment();

    console.log($scope.date)

}]);

您需要先添加 angular.min.js 脚本。并在 angular-moment.js

前加上 moment.js
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.6.4/angular.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/angular.js/1.6.1/angular-route.min.js"></script>
<script src="scripts/moment.js"></script>
<script src="scripts/angular-moment.js"></script>
<script src="scripts/app.js"></script>

因为您从 scripts 文件夹中包含 moment.jsangular-moment,您应该将这两个文件下载到 scripts 文件夹中,并确保您的服务器为 scripts 文件夹为 static(这可以通过检查浏览器的 network 标签来确认)。

以下示例使用在线脚本并且工作正常。

var app = angular.module('myApp', ['ngRoute', 'angularMoment']);

app.controller('transCtrl', ['$scope', '$http', 'moment', function($scope, $http, moment) {
  $scope.date = new moment();

  console.log($scope.date)

}]);
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.6.4/angular.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/angular.js/1.6.1/angular-route.min.js"></script>
<!-- <script src="scripts/moment.js"></script> -->
<script src="https://cdnjs.cloudflare.com/ajax/libs/moment.js/2.8.0/moment.js"></script>
<!-- <script src="scripts/angular-moment.js"></script> -->
<script src="https://cdnjs.cloudflare.com/ajax/libs/angular-moment/1.0.1/angular-moment.js"></script>

<div ng-app="myApp" ng-controller="transCtrl">
  <div class="container">

  </div>
</div>