2015-11-03 3 views
3

Я пытаюсь связать приложение с угловыми установками с помощью Webpack, и у меня проблемы после минимизации пакета. Этот синтаксис, с ручным аннотированием зависимостей, работы:Webpack, угловой и ng-аннотатный загрузчик - с проблемами с аннотирующими угловыми файлами

var app = angular.module('app', [ 
    'ui.router' 
]) 
.config(['$locationProvider', '$stateProvider', ($locationProvider, $stateProvider) => { 
    $locationProvider.html5Mode(true); 
    $stateProvider 
     .state('root', { 
      url: '/', 
      views: { 
       '': { 
        template: '<p>Hello!</p>' 
       } 
      } 
     }); 
}]); 

в то время как этот синтаксис производит $injector:modulerr ошибку:

var app = angular.module('app', [ 
    'ui.router' 
]) 
.config(($locationProvider, $stateProvider) => { 
    $locationProvider.html5Mode(true); 
    $stateProvider 
     .state('root', { 
      url: '/', 
      views: { 
       '': { 
        template: '<p>Hello!</p>' 
       } 
      } 
     }); 
}); 

Я использую нг-аннотирования-загрузчик для Webpack. Вот соответствующая часть файла конфигурации:

module: { 
    loaders: [ 
     { 
      test: /\.js$/, 
      exclude: /node_modules/, 
      loader: 'ng-annotate!babel?stage=1' 
     }, 

Но это не исправить ошибку [$injector:modulerr]. Пытался изменить линию loader: 'ng-annotate!babel?stage=1' с loaders: ['ng-annotate', 'babel?stage=1'], без каких-либо улучшений. Не могли бы вы предложить, как я мог это исправить?

EDIT: в конце концов нашел, что мой вопрос в основном дублирует Angular ng annotate does not work with babel

EDIT2: Было отмечено, что мне нг-аннотировать не удалось аннотировать .config углового модуля, потому что я был импортируя угловой как модуль es6 вместо объявления его как переменной, которая, по-видимому, смутила ng-аннотацию.

ответ

3

Хорошо, я в конечном итоге нашел в ng-annotate’s Readme, что строка 'ngInject';, когда она находится внутри функции, может показывать ng-annotate, функцию которой можно аннотировать.

Я пробовал это с моей настройкой, и это сработало.

Но было бы здорово настроить ng-annotate-loader таким образом, чтобы в функциях не требовались такие посторонние маркерные строки.

P.S .: Часть Edit2 моего вопроса содержит возможный ответ - в моем случае, статический анализатор нг-аннотирования и получила несчастными, потому что angular был импортирован как модуль ES6 вместо заявленных в качестве переменной, используя require синтаксис.