2012-11-28 13 views
23

पर तैनात करते समय अज्ञात प्रदाता त्रुटि मेरे पास एक रेल/कोणीय जेएस ऐप है जो स्थानीय विकास पर्यावरण में ठीक काम करता है। हालांकि, जब मैं Heroku के लिए इस एप्लिकेशन को तैनात AngularJS एक रिटर्न इस त्रुटि काम नहीं करता:रेल/अंगुलरजेएस ऐप को हरोकू

Unknown provider: eProvider <- e 

मैं अनुसंधान के एक बिट किया है और ऐसा लगता है यह precompiling और संपत्ति की minification के साथ कुछ है , लेकिन मुझे नहीं पता कि इसे हल करने के लिए क्या करना है। कोई विचार? धन्यवाद!

इस तरह नियंत्रक दिखता है:

function RemindersCtrl($scope, $http) { 
    $http.get('/reminders.json').success(function(data) { 
    $scope.reminders = data; 
    console.log(data); 
    }); 
} 

और यह ध्यान में रखते हुए कोड है:

%section.reminders 
     %div{"ng-controller" => "RemindersCtrl"} 
     %ul 
      %li{"ng-repeat" => "reminder in reminders"} 
      .title {{reminder.title}} 

अद्यतन: मैं इस के लिए नियंत्रक बदल गया है, लेकिन परिणाम एक जैसे:

var RemindersCtrl = function($scope, $http) { 
    $http.get('/reminders.json').success(function(data) { 
    $scope.reminders = data; 
    console.log(data); 
    }); 
} 
RemindersCtrl.$inject = ['$scope','$http']; 
+0

पर प्रलेखित है क्या आपका ऐप कहीं भी दिखाई दे रहा है ताकि हम एक नज़र देख सकें? –

+0

अभी के लिए, मैंने संपत्ति को संपीड़ित करके इसे "हल" किया है। यह एक साधारण परीक्षण ऐप के लिए कोई समस्या नहीं है, लेकिन वास्तविक ऐप के लिए यह विकल्प नहीं है। – John

+0

देखें कि http://stackoverflow.com/questions/12339272/angular-js-unknown-provider मदद करता है। –

उत्तर

27

AngularJS ट्यूटोरियल (http://docs.angularjs.org/tutorial/step_05) आप या तो नियंत्रक को यह भी जोड़ सकते हैं minification समस्याओं को रोकने के लिए के अनुसार:

function RemindersCtrl($scope, $http) { 
    ... 
} 
RemindersCtrl.$inject = ['$scope', '$http']; 

या बजाय इस तरह एक समारोह को परिभाषित करने की:

function RemindersCtrl($scope, $http) { 
    ... 
} 

यह इस तरह किया जाना चाहिए:

var RemindersCtrl = ['$scope', '$http', function($scope, $http) { 
    ... 
}]; 
+0

सुनिश्चित करें कि आप इस पैटर्न को निर्देश-विशिष्ट नियंत्रकों को भी लागू करें! – tsikov

+2

मुझे कैसे पता चलेगा कि कौन सी फाइल ने इस त्रुटि को फेंक दिया? ऐसा दिखाया गया है कि यह application.js पर था – Aleksandrus

5

आप शायद अपने नियंत्रक को FooController = function($http) {} के रूप में परिभाषित कर रहे हैं, तो आपकोके रूप में परिभाषित करना चाहिए

देखें mroe here

+0

प्रश्न में मेरा अपडेट देखें – John

+0

चूंकि त्रुटि प्रदाता के साथ है, यह 'module.config' पर होना चाहिए। पीएस: इस मामले के लिए ऐरे घोषणा शैली सबसे अच्छी है;) –

5

कोणीय टीम (और आम तौर पर बोलने वाले) अनुशंसा करते हैं कि हम वैश्विक दायरे को प्रदूषित न करें।

.controller विधि,

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

myApp.controller('GreetingCtrl', ['$scope', function($scope) { 
    $scope.greeting = 'Hola!'; 
}]); 

मेरे लिए ठीक काम किया। यह Angular Understanding Controllers documentation

संबंधित मुद्दे