Angular NG-String-DI не работает с NgRoute
Если я использую ng-strict-di
с моим приложением Angular, и я использую ngRoute
модуль, я получаю ошибку:
[Error] Error: [$injector:modulerr] http://errors.angularjs.org/1.4.0-rc.0/$injector/modulerr?p0=epoiApp&p1=%5B%24injector%3Astrictdi%5D%20http%3A%2F%2Ferrors.angularjs.org%2F1.4.0-rc.0%2F%24injector%2Fstrictdi%3Fp0%3Dfunction(%2524routeProvider)%0Ahttps%3A%2F%2Fcode.angularjs.org%2F1.4.0-rc.0%2Fangular.min.js%3A6%3A426%0A%24%24annotate%40https%3A%2F%2Fcode.angularjs.org%2F1.4.0-rc.0%2Fangular.min.js%3A182%3A482%0Ae%40https%3A%2F%2Fcode.angularjs.org%2F1.4.0-rc.0%2Fangular.min.js%3A37%3A533%0Ad%40https%3A%2F%2Fcode.angularjs.org%2F1.4.0-rc.0%2Fangular.min.js%3A36%3A238%0Ahttps%3A%2F%2Fcode.angularjs.org%2F1.4.0-rc.0%2Fangular.min.js%3A36%3A358%0An%40https%3A%2F%2Fcode.angularjs.org%2F1.4.0-rc.0%2Fangular.min.js%3A7%3A306%0Ah%40https%3A%2F%2Fcode.angularjs.org%2F1.4.0-rc.0%2Fangular.min.js%3A36%3A135%0A%24a%40https%3A%2F%2Fcode.angularjs.org%2F1.4.0-rc.0%2Fangular.min.js%3A39%3A417%0Ad%40https%3A%2F%2Fcode.angularjs.org%2F1.4.0-rc.0%2Fangular.min.js%3A18%3A383%0Auc%40https%3A%2F%2Fcode.angularjs.org%2F1.4.0-rc.0%2Fangular.min.js%3A19%3A180%0AUd%40https%3A%2F%2Fcode.angularjs.org%2F1.4.0-rc.0%2Fangular.min.js%3A18%3A2%0Ahttps%3A%2F%2Fcode.angularjs.org%2F1.4.0-rc.0%2Fangular.min.js%3A285%3A431%0Afire%40file%3A%2F%2F%2FVolumes%2FMacintosh%2520HD%2FUsers%2FdeLac%2Fsiti%2Fepoi%2FePOI%2Fassets%2Flibs%2Fjquery.js%3A3143%3A35%0AfireWith%40file%3A%2F%2F%2FVolumes%2FMacintosh%2520HD%2FUsers%2FdeLac%2Fsiti%2Fepoi%2FePOI%2Fassets%2Flibs%2Fjquery.js%3A3255%3A11%0Aready%40file%3A%2F%2F%2FVolumes%2FMacintosh%2520HD%2FUsers%2FdeLac%2Fsiti%2Fepoi%2FePOI%2Fassets%2Flibs%2Fjquery.js%3A3467%3A24%0Acompleted%40file%3A%2F%2F%2FVolumes%2FMacintosh%2520HD%2FUsers%2FdeLac%2Fsiti%2Fepoi%2FePOI%2Fassets%2Flibs%2Fjquery.js%3A3498%3A15
(anonymous function) (angular.min.js, line 37)
n (angular.min.js, line 7)
h (angular.min.js, line 36)
$a (angular.min.js, line 39)
d (angular.min.js, line 18)
uc (angular.min.js, line 19)
Ud (angular.min.js, line 18)
(anonymous function) (angular.min.js, line 285)
fire (jquery.js, line 3143)
fireWith (jquery.js, line 3255)
ready (jquery.js, line 3467)
completed (jquery.js, line 3498)
Это странно для меня с тех пор ngRoute
это официальный модуль от Angular, не так ли? Есть ли способ использовать их вместе?
Я уже включил angular-route.min.js
<script src="https://code.angularjs.org/1.4.0-rc.0/angular.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/angular.js/1.4.0-rc.0/angular-route.min.js"></script>
2 ответа
Вы должны ввести этот модуль при регистрации приложения.
Это не идет с файлом angular.js. ngRoute определяется в файле angular-route.js
angular.module('app', ['ngRoute']);
Для этого вы должны сначала загрузить angular-route.js
Я вставил ошибку и получил точный текст ошибки как
Не удалось создать экземпляр модуля epoiApp из-за: [$injector:strictdi] http:// errors.angularjs.org/1.4.0-rc.0/$injector/strictdi...) https:// code.angularjs.org/1.4.0-rc.0/angular.min.js:6:426
Вы должны включить уменьшенную версию ng-route (angular-route.min.js), чтобы избежать этой ошибки.
Есть много способов сделать минимизацию кода безопасной, вы делаете это с помощью строгого-di, ng-route может использовать ng-annotate. Каждый разработчик библиотеки может использовать разные методы для минимизации кода. В конечном итоге цель достижения неразрывного минимизированного кода должна быть достигнута.