Angular Translate: плагин LocalStorage и ошибка requirejs

Я использую Angular в сочетании с require.js. В дополнение к этому я использую аддон angular-translate. Теперь я добавил плагин angular-translate-storage-local и получил эту ошибку: Error: [$injector:unpr] Unknown provider: $translateCookieStorageProvider <- $translateCookieStorage <- $translateLocalStorage <- $translate

Обычно я бы сказал, что забыл добавить зависимости, но я этого не сделал (наверное)!

My requirejs.config:

requirejs.config({
    shim: {
        angular: {
            exports: 'angular'
        },
        ngTranslateLoader: ['ngTranslate'],
        ngTranslateLocalStorage: ['ngTranslate']
    },

    paths: {
        ngTranslate: '../../vendor/angular-translate/angular-translate',
        ngTranslateLoader: '../../vendor/angular-translate-loader-static-files/angular-translate-loader-static-files',
        ngTranslateLocalStorage: '../../vendor/angular-translate-storage-local/angular-translate-storage-local'
    }
});

My module:

define(function(require) {
    require('ngTranslate');
    require('ngTranslateLocalStorage');
    require('ngTranslateLoader');

    var angular = require('angular');

    var app = angular.module('app', [
        'pascalprecht.translate'
    ])
        .config([$translateProvider', function ($translateProvider) {
            $translateProvider
                .useStaticFilesLoader({
                    prefix: '/language/',
                    suffix: '.json'
                })
                .preferredLanguage('en-DK')
                .useSanitizeValueStrategy('escape')
                .useLocalStorage();
        }]);
});

Плагин загрузки статических файлов работает хорошо. Где мой провал?

Редактировать: я добавил следующее в свою конфигурацию requirejs:

ngTranslateLocalStorage: ['ngTranslateCookieStorage', 'ngTranslate'],
ngTranslateCookieStorage: ['ngCookies', 'ngTranslate'],
ngCookies: ['angular'],

Теперь я получаю: Error: [$injector:unpr] Unknown provider: $cookieStoreProvider <- $cookieStore <- $translateCookieStorage <- $translateLocalStorage <- $translate

Если я правильно понимаю, что requirejs shim правильный, этого должно быть достаточно для require(ngTranslateLocalStorage) сейчас, но тогда я получаю сообщение о том, что pascalprecht.translate неизвестно. Если мне требуются все зависимости, хотя это уже сделано в прокладке, я получаю сообщение об ошибке выше. Все еще что-то не так!?


person messy    schedule 16.10.2015    source источник


Ответы (1)


Служба $translateLocalStorage зависит от $translateCookieStorage, которая, в свою очередь, зависит от $cookieStore от angular-cookies.

Поэтому вам нужно включить также angular-translate-storage-cookie, angular-cookies и добавить ngCookies в зависимости модуля.

Подводя итог, вы должны иметь:

"angular-translate"
"angular-translate-loader-static-files"
"angular-cookies"
"angular-translate-storage-cookie"
"angular-translate-storage-local"
person Michael P. Bazos    schedule 16.10.2015
comment
Я попробовал ваш ответ, но безуспешно. Я обновил свой вопрос. - person messy; 17.10.2015
comment
Кажется, вы не добавили ngCookies в массив зависимостей при определении angular.module('app', [...]) - person Michael P. Bazos; 17.10.2015
comment
Это работает, если я require() все. Я думал, что прокладка requirejs справится с этим за меня!? - person messy; 17.10.2015