2017-08-15 8 views
0

角度コードを圧縮形式で扱うためにngannotate-railsを使用しています。これは、Rails 3.2 + Angular 1.5.xアプリです。開発モードでngannotate-railsが動作しません

私はその後、私は、次の

if ENV['NG_FORCE'] == 'true' 
    config.assets.compress = true 
    config.assets.compile = true 
    config.assets.digest = true 
    config.assets.debug = false 

    # Don't fallback to assets pipeline if a precompiled asset is missed 
    config.assets.precompile += %w(*.css *.js *.woff *.eot *.svg *.ttf) # The fix for font-awesome 

    else 
    # Do not compress assets 
    config.assets.compress = false 

    # Expands the lines which load the assets 
    config.assets.debug = true 
    end 

を追加した設定/環境/ development.rbで、私は、次の操作を行い、私のGemfileに以下を追加し、バンドル

group :assets do 
    gem 'sprockets-derailleur', '~> 1.0.0'   # Speed up precompiles with multi-core compile 
    gem 'turbo-sprockets-rails3', '~> 0.3.14'  # Compile only changed assets 
    gem 'sass-rails', ' ~> 3.2'     # Main CSS extension in use 
    gem 'less', '~> 2.6.0'       # Less required for ui-utils plugin for AngularJS 
    gem 'therubyracer', '~> 0.12.1'     # v8 library required for less 
    gem 'coffee-rails'        # Language which compiles into JS 
    gem 'uglifier'      # JS parser, minifier, compressor or beautifier toolkit 

    gem 'ngannotate-rails', '~> 1.2'    # AngularJS minifier 
end 

を走ってきましたコマンドが、NG-注釈は、私は公共/資産/でコンパイルされた出力を確認し

NG_FORCE=true RAILS_ENV=development bundle exec rake assets:clean assets:precompile:primary 
NG_FORCE=true rails s 

に注釈を付けるされていません。..私はこれを一番上に置いています。

(function(){var e;e=function(e,n,t,i,o,c,r,a,u,d,s,l,v,f,g,h,m,p,b,k,y,I,T,E,q,w,A){var D,P,F,x,j; 

AngularJSがこのエラーをスローするように、文字列は縮小されますが注釈は付けられません。

application-57db964b9323e90284f1f3c331c9c3aa.js:43 Error: [$injector:unpr] Unknown provider: eProvider <- e <- InvoicesController 
http://errors.angularjs.org/1.5.7/$injector/unpr?p0=eProvider%20%3C-%20e%20%3C-%20InvoicesController 
    at http://localhost:3000/assets/application-57db964b9323e90284f1f3c331c9c3aa.js:41:28591 
    at http://localhost:3000/assets/application-57db964b9323e90284f1f3c331c9c3aa.js:42:16654 
    at Object.r [as get] (http://localhost:3000/assets/application-57db964b9323e90284f1f3c331c9c3aa.js:42:15610) 
    at http://localhost:3000/assets/application-57db964b9323e90284f1f3c331c9c3aa.js:42:16739 
    at r (http://localhost:3000/assets/application-57db964b9323e90284f1f3c331c9c3aa.js:42:15610) 
    at o (http://localhost:3000/assets/application-57db964b9323e90284f1f3c331c9c3aa.js:42:15910) 
    at Object.s [as instantiate] (http://localhost:3000/assets/application-57db964b9323e90284f1f3c331c9c3aa.js:42:16247) 
    at http://localhost:3000/assets/application-57db964b9323e90284f1f3c331c9c3aa.js:43:9470 
    at http://localhost:3000/assets/application-57db964b9323e90284f1f3c331c9c3aa.js:98:32136 
    at Object.<anonymous> (http://localhost:3000/assets/application-57db964b9323e90284f1f3c331c9c3aa.js:47:31053) <div id="wrapper" class="ui-wrapper ng-scope" ui-view=""> 

UPDATE

InvoicesController

InvoicesController = ($scope, $http, $location, $state, $stateParams, $uibModal, $timeout, flash, Invoice, Division, Costing, Job, JobService, Common, ShortcutService, InvoiceService, TimesheetService, DisbursementService, DebtorService, SearchService, LineItemService, DateService, $filter, $mdDialog, $mdMedia, Restangular, hotkeys) -> 

<Snip: Too long> 
    switch $state.current.name 
    # Index 

    when "invoices" 
     $scope.query = SearchService.getFilter('invoices') 
     page = SearchService.getPage('invoices') 

     if ($scope.query) 
     # Filter already exists 
     $scope.filterForm = true 
     getInvoices(angular.extend({}, $scope.query, {page: page, limit: 10, search: $scope.query})) 
     else if page > 0 
     $scope.query = { order: '-invoice_no', limit: 10, page: page } 
     $scope.onPaginate(page, 10) 
     else 
     $scope.resetFilter() 

    <Snip> 

angular 
    .module('paisApp') 
    .controller('InvoicesController', InvoicesController) 
+0

あなたのInvoicesControllerコードを共有します –

+0

コントローラーの上部に「ngInject」が表示されず、注釈を付ける場所がありますか? –

答えて

1

それは上記のスニペットで切断されている可能性がありますが、あなたが "ngInject" ディレクティブを提供しているだろうところ、私は表示されませんあなたはコードします。

は、私はあなたのコントローラのコードは、それがコードをtranspilingときNG-注釈がポイントでフックとして探し"ngInject"

MyController = ($scope, ...) -> 
    "ngInject" 
    # etc 

のように見えることを期待します。

+0

私はES6だけで、私はcoffeescriptを使っていると思ったので、私は自分のコードに "ngInject"を持っていませんでした。私はcoffeescriptがES6にコンパイルされなければならないと思うし、私はその行を入れなければなりません。ありがとう。 – map7

+0

私はes6とは関係ないと思います。私はcoffeescriptでも使用しますが、基本的にnpmモジュールはこれらのコードポイントを使用して、注入を設定する場所を特定します。 npmドキュメントを見てもそれを行う他の方法もありますが、私はcoffeescriptを使ってこの方法が最高できれいであることを発見しました。 :) –

関連する問題