2016-05-10 12 views
1

アンギュラ翻訳使用して翻訳を追加する方法の優れた解説(https://technpol.wordpress.com/2013/11/02/adding-translation-using-angular-translate-to-an-angularjs-app/角度-翻訳インジェクター:modulerrエラー

によると、私は壊し、私の頭のエラーを持っており、それがなぜ起こるか私は思ったんだけど?そして私は何が間違っているのですか?

エラー:

angular.js:36 Uncaught Error: [$injector:modulerr] http://errors.angularjs.org/1.2.26/ $injector/modulerr?p0=app&p1=Error%3A%20…alhost%3A9085%2FScripts%2Fcomponents%2Fangular%2Fangular.min.js%3A18%3A170)

目的:私の全体のアプリ

部分負荷の翻訳私がやった:

  1. ダウンロード(両方)亭を経由して、付属のプロジェクトに

    • 角度-翻訳・ローダー部分を角度-変換
  2. は(角後)ReguireJS設定ファイル

    'angular': '../Scripts/components/angular/angular.min', 
        'ngAnimate': '../Scripts/components/angular-animate/angular-animate.min', 
        'ngResource': '../Scripts/components/angular-resource/angular-resource.min', 
        'ngRoute': '../Scripts/components/angular-route/angular-route.min', 
        'ngCookies': '../Scripts/components/angular-cookies/angular-cookies.min', 
    
    'pascalprecht.translate': '../Scripts/components/angular-translate/angular-translate.min', 
        'angularTranslate': '../Scripts/components/angular-translate-loader-partial/angular-translate-loader-partial.min' 
    
  3. を追加しましたシムにそれらを追加しました:

    app.jsファイルにおいて​​
  4. (角度もの後、終了時に)依存性を含んでいた:
    'pascalprecht.translate', 
    'angularTranslate', 
    
var app = angular.module('app', ['...', 
            'pascalprecht.translate', 
            'angularTranslate'           ]); 
  1. App.js設定
    app.config(['$routeProvider', '$locationProvider', '$httpProvider', '$translateProvider', '$translatePartialLoaderProvider', 
        function ($routeProvider, $locationProvider, $httpProvider, $translateProvider, $translatePartialLoaderProvider) { 
    
  2. コントローラ内の設定config:

define( [ 'angular', './services/services', './controllers/controllers', './directives/directives', './filters/filters', 'pascalprecht.translate' ], function(angular) { 'use strict';

var module = angular.module('common', ['common.services', 'common.controllers', 'common.directives', 'common.filters', 'pascalprecht.translate']); 

return module; 

})。

  • コントローラ
  • define(function (require) { 'use strict';

    function angularTranslate ($translateProvider, $translatePartialLoaderProvider) { 
        $translateProvider.useLoader('$translatePartialLoader', { 
         urlTemplate: '../Translations/locale-{part}.json' 
        }); 
    
        $translateProvider.preferredLanguage('en'); 
    } 
    
    return angularTranslate; 
    

    })

      。正確には、私はまだTHIエラーを取得し、チュートリアルの上、以下の後

      私はgithubので検索ALBOとstackoverflowのが、何が私のために動作します。

      助けてください!

    答えて

    0

    ショート:あなたはRequireJSで管理を依存関係が正しくありません。コントローラのモジュールには、pascalprecht.translateではなく、angularTranslateが必要です。


    ロング: 最初に私は、私はまた、最新の(1.5.xのは気圧である)AngularJSと角度の両方を使用することをお勧めしますがhttps://angular-translate.github.io/

    で発見されます公式ドキュメントとガイドを使用して、あなたのアドバイスう-translate(これは2.10.x atmです)。

    また、非圧縮バージョンのライブラリのみを使用すると、より良いエクスペリエンスが得られるので、アドバイスします。縮小されたソースファイルは開発者用ではありません。

    JSFiddle、Plnkrなどを使用してデモを行っていただければ幸いです。誰もがコンセプト/バグの実証を与えるためです。

    このように、使用している角度翻訳のバージョンは明確ではありません。 bower install angular-translateを実行した場合は、すでに最新のものがあるでしょうが、参照したリンクの後ろのページは古いもの(約3歳)で作成されます。 APIが変更されました。

    実際に問題が発生しました:AngularJSとRequireJSの両方で問題が混在していると思います。

    まず、RequireJSの(シム)設定が誤解を招く/混乱しています。部分ローダープラグインの名前をangularTranslateとしないでください。

    'angularTranslate': '../Scripts/components/angular-translate-loader-partial/angular-translate-loader-partial.min' 
    

    'angularTranslate': { 
        deps: ['pascalprecht.translate'] 
    } 
    

    あまり混乱pascalprecht.translate.partialLoaderのような名前になります。

    そして今RequireJSモジュールの依存関係の管理

    :あなたはシム依存 angularTranslate定義されている

    1. - >pascalprecht.translateを。最後のものが要求されるたびに、最初のものが前にロードされます。それはいいです。
    2. あなたのアプリケーションを定義したのは、pascalprecht.translateangularTranslate(これは実際に部分ローダーです)の両方に依存します。これは問題ありませんが、最初のものは実際には時代遅れです。 shim依存関係を既に定義しているので、自動的に利用可能になります。
    3. しかし、コントローラのモジュールにはコアライブラリpascalprecht.translateが必要です。

    これはを意味しますRequireJSの依存関係の管理リゾルバは、部分的なローダー(それがこれを行う必要がある理由もなく)を待って、ここでAJS注射(処理するとき、それは/利用できないだろうことができ、そのためではないだろう。translatePartialLoaderProviderを)。


    免責事項:私はAngularJSプラグインの角形翻訳者です。

    +0

    knalliは、私が改善するものです。 「pascalprecht.translate.partialLoader」のみが残っています。 3)スクリプトを非縮小版に変更しました。 しかし、残念ながらエラーが発生します。 コントローラモジュールの依存関係をangleTranslate(new 'pascalprecht.translate.partialLoader')に変更しようとしましたが、動作しませんでした。 – pabloxerr

    +0

    また、両方のスクリプト(angular-translateおよびangular-translate-loader-partial)がプロジェクトにフックアップされています。それはそうなのでしょうか?どこが間違っていますか? – pabloxerr

    +0

    両方のスクリプトをロードしなければなりません。最初はコアで、これ以降はすべてのローダー/プラグインです。あなたの場合:コントローラの前にロードする必要があります。 – knalli

    0

    appjsがこのように見えた:

    define(
    [ 
        ... 
        'pascalprecht.translate', 
        'angularTranslate', 
    ], 
    var app = angular.module('app', ['...', 
               'pascalprecht.translate', 
               'angularTranslate'           ]); 
    

    が、それは次のようにする必要があります:私は、通常のモジュールとしてサブモジュールの角度-翻訳・ローダー部分を定義した、それはエラーが発生

    define(
    [ 
        ... 
        'pascalprecht.translate', 
        'angularTranslate', 
    ], 
    var app = angular.module('app', ['...', 
               'pascalprecht.translate'                   ]); 
    

    。両方のモジュール間の依存関係(angle-translateおよびangular-translate-loader-partial)は、のみrequirejs shimにする必要があります。 1)社名変更: - あなたはapp.js 'pascalprecht.translate' 依存関係から削除 2)を提案したようangularTranslateからpascalprecht.translate.partialLoaderにここ

    関連する問題