IONIC APP- [$injector:unpr] 未知供应商:

IONIC APP- [$injector:unpr] Unknown provider:

我收到这个错误,一直在 google 上寻找它,但仍然无法解决这个问题。

 ionic.bundle.js:26799 Error: [$injector:unpr] Unknown provider: $cordovaCameraProvider <- $cordovaCamera <- CameraCtrl

app.js 代码如下

angular.module('starter', ['ionic','ng-Cordova','starter.controllers', 'starter.services'])

.run(function($ionicPlatform) {
  $ionicPlatform.ready(function() {
    // Hide the accessory bar by default (remove this to show the accessory bar above the keyboard
    // for form inputs)
    if (window.cordova && window.cordova.plugins && window.cordova.plugins.Keyboard) {
      cordova.plugins.Keyboard.hideKeyboardAccessoryBar(true);
      cordova.plugins.Keyboard.disableScroll(true);

    }
    if (window.StatusBar) {
      // org.apache.cordova.statusbar required
      StatusBar.styleDefault();
    }
  });
})

.config(function($stateProvider, $urlRouterProvider) {

  $stateProvider
     .state('tab', {
      url: '/tab',
      abstract: true,
      templateUrl: 'templates/tabs.html'
    })


      .state ('camera',{
       url:'/camera',
       controller:'CameraCtrl'
    })

     .state('tab.account', {
          url: '/done',
          views: {
          'tab-d': {
           templateUrl: 'templates/d.html',
           controller: 'DCtrl'
       }
    }
 });

  $urlRouterProvider.otherwise('/abc');

 });

Controller.js 代码如下

.controller('CameraCtrl', function($scope, $cordovaCamera) {

  document.addEventListener("deviceready", function () {

    var options = {
       quality: 50,
       destinationType: Camera.DestinationType.DATA_URL,
       sourceType: Camera.PictureSourceType.CAMERA,
       allowEdit: true,
       encodingType: Camera.EncodingType.JPEG,
       targetWidth: 100,
       targetHeight: 100,
       popoverOptions: CameraPopoverOptions,
       saveToPhotoAlbum: false,
       correctOrientation:true
     };

     $cordovaCamera.getPicture(options).then(function(imageData) {
        var image = document.getElementById('myImage');
        image.src = "data:image/jpeg;base64," + imageData;
     }, function(err) {
      // error
    });

  }, false);
})

点击这个图标应该会打开相机来捕捉图像

<a href="#/camera"><i class="icon ion-camera"></i></a>

app.js 中,您应该更改此行

angular.module('starter', ['ionic','ng-Cordova','starter.controllers', 'starter.services'])

至此

angular.module('starter', ['ionic','ngCordova','starter.controllers', 'starter.services'])


ngCordova docs中有更多相关信息:

作为 Angular 依赖项注入

angular.module('myApp', ['ngCordova'])

我通过以下步骤解决了这个问题:

第 1 步:使用 bower 安装 ngCordova

$ bower install ngCordova --save

第 2 步: 在 index.html 文件中的 [=36] 之前包含 ng-cordova.js 或 ng-cordova.min.js =] 和你的 AngularJS / Ionic 文件之后(因为 ngCordova 依赖于 AngularJS)。

<script src="lib/ngCordova/dist/ng-cordova.js"></script>
<script src="cordova.js"></script>

第 3 步: 然后,将 ngCordova 作为依赖项包含在您的 angular 模块中:

angular.module('myApp', ['ngCordova'])

参考: http://ngcordova.com/docs/install/