2012-05-18 12 views
8

मैंने हाल ही में एक रेलवे 3.2.3 बैक एंड के साथ एक कोणीय जेएस 1.0.0rc8 ऐप बनाया है और यह विकास में ठीक काम करता है, लेकिन हेरोकू में तैनाती के बाद अज्ञात प्रदाता त्रुटि - स्पष्ट रूप से ऐप सेवा ऑब्जेक्ट नहीं देख सका।AngularJS + Rails - संपत्तियों को संपीड़ित करते समय समस्याएं

मुझे पता है कि यह इस तरह एप्लिकेशन मॉड्यूल में एक अलग फाइल के रूप में कोणीय resource.js शामिल हैं और ngResourceसुई अब आवश्यक है:

// main app javascript file 

'use strict'; 

angular.module('contactapp', ['ngResource']). 
    config(['$routeProvider', function($routeProvider) { 
    $routeProvider. 
     when('/contacts', {template: 'assets/app/partials/contact-list.html', controller: ContactListCtrl}). 
     when('/contacts/new', {template: 'assets/app/partials/new-contact.html', controller: ContactListCtrl}). 
     when('/contacts/:contact_id', {template: 'assets/app/partials/contact-detail.html', controller: ContactDetailCtrl}). 
     otherwise({redirectTo: '/contacts'});  

}]); 

मैं भी जानते हैं कि जब फ़ाइलें न्यूनतम किया जाता है कि नियंत्रकों नहीं बता सकता कि उनके निर्भरता जब तक कि वे भी इस तरह नियंत्रक वस्तुओं में इंजेक्ट किया जाता है:

ContactListCtrl.$inject = ['$scope', '$http', 'Contacts']; 

मैं भी अन्य तरीका है कि कोणीय कोष्ठक notat साथ की सिफारिश की गई कर की कोशिश की है आयन और इस तरह के एक समारोह में गुजर रहा है:

var ContactListCtrl= ['$scope', '$http', 'Contacts', function($scope, $http, Contacts) { /* constructor body */ }]; 

हालांकि, इनमें से कोई भी काम नहीं करता है।

एक ही तरीका है अपने आवेदन देख सकते हैं संसाधन प्रदान की Production.rb फ़ाइल में संपत्ति संपीड़न को बंद करने, इस तरह से किया गया था:

# Compress JavaScripts and CSS 
    config.assets.compress = false 

यह मेरे लिए कई घंटे लग गए इस यह पता लगाने की है, लेकिन मैं हाल ही में एक और रेल + AngularJS ऐप देखा जो एक ही मुद्दा था।

जेन्स क्रॉस इसी निष्कर्ष पर आया था और अपने ब्लॉग पर यह बताते हैं: http://www.websector.de/blog/2012/01/17/fun-with-angularjs-rails-coffeescript-sass-another-cafe-townsend-example/

मैं एक अपेक्षाकृत बड़े एप्लिकेशन है, और मुझे संपत्ति को संपीड़ित करने की जरूरत है, मैं कैसे इस के आसपास रेल के साथ कोणीय का उपयोग कर मिलता है ?

धन्यवाद।

उत्तर

3

मुझे लगता है कि समस्या यह है कि आपका मिनीफायर अभी भी नियंत्रण के परिवर्तनीय नाम को obfusticating कर रहा है (ContactListCtrl -> ए या जो कुछ भी करता है)।

क्या आपने मॉड्यूल.controller फ़ंक्शन के साथ अपने नियंत्रकों को परिभाषित करने का प्रयास किया है?

angular.module('myModule', []) 
.controller('Controller1', ['dep1', 'dep2', function(dep1, dep2) { 
    //code 
}]); 
+1

मैंने इस विधि को बिना किसी सफलता के भी प्रयास किया है, मुझे एक ही त्रुटि मिलती है। यहां देखें: http://stackoverflow.com/questions/13459452/rails-3-angularjs-minification-does-not-work-in-production-unknown-provider – jemminger

2

इस लाइन मेरी config/वातावरण/production.rb को किया चाल मेरे लिए जोड़ना: आप रेल 4 उपयोग कर रहे हैं

config.assets.js_compressor = Sprockets::LazyCompressor.new { Uglifier.new(:mangle => false) } 
7

, करने के लिए अपने उत्पादन और निर्धारण वातावरण में अपने js_compressor बदल :

config.assets.js_compressor = Uglifier.new(mangle: false) 
+1

यह काम नहीं करता है। – scaryguy

+1

मेरी मदद की (हेरोकू पर एक कोणीय + रेल ऐप)। –

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