Я использовал yo-angular для создания своего шаблона angularjs с помощью bootstrap/grunt/bower. Я также хочу использовать подчеркивание в приложении:
npm install underscore --save-dev
В MainCtrl я вызываю underscore.js, чтобы посмотреть, работает ли он:
angular.module('yomanApp')
.controller('MainCtrl', function ($scope) {
$scope.awesomeThings = [
'HTML5 Boilerplate',
'AngularJS',
'AngularJS'
];
_.each([1,2,3],console.log);
});
Когда я запускаю приложение с Chrome, я получаю эту ошибку в консоли:
ReferenceError: _ is not defined
at new <anonymous> (http://localhost:9000/scripts/controllers/main.js:18:5)
at invoke (http://localhost:9000/bower_components/angular/angular.js:4203:17)
at Object.instantiate (http://localhost:9000/bower_components/angular/angular.js:4211:27)
at http://localhost:9000/bower_components/angular/angular.js:8501:28
at link (http://localhost:9000/bower_components/angular-route/angular-route.js:975:26)
at invokeLinkFn (http://localhost:9000/bower_components/angular/angular.js:8258:9)
at nodeLinkFn (http://localhost:9000/bower_components/angular/angular.js:7768:11)
at compositeLinkFn (http://localhost:9000/bower_components/angular/angular.js:7117:13)
at publicLinkFn (http://localhost:9000/bower_components/angular/angular.js:6996:30)
at $get.boundTranscludeFn (http://localhost:9000/bower_components/angular/angular.js:7135:16) <div ng-view="" class="ng-scope">
После этой ошибки я добавил модуль в конфигурацию приложения: 'use strict';
/**
* @ngdoc overview
* @name yomanApp
* @description
* # yomanApp
*
* Main module of the application.
*/
angular
.module('yomanApp', [
'ngAnimate',
'ngCookies',
'ngResource',
'ngRoute',
'ngSanitize',
'ngTouch',
'underscore'
])
.config(function ($routeProvider) {
$routeProvider
.when('/', {
templateUrl: 'views/main.html',
controller: 'MainCtrl'
})
.when('/about', {
templateUrl: 'views/about.html',
controller: 'AboutCtrl'
})
.when('/accordeon', {
templateUrl: 'views/accordeon.html',
controller: 'IssuesCtrl'
})
.otherwise({
redirectTo: '/'
});
});
Теперь я получаю эту ошибку:
Uncaught Error: [$injector:modulerr] Failed to instantiate module yomanApp due to:
Error: [$injector:modulerr] Failed to instantiate module underscore due to:
Error: [$injector:nomod] Module 'underscore' is not available! You either misspelled the module name or forgot to load it. If registering a module ensure that you specify the dependencies as the second argument.
Последнее, что я пробовал, это добавить его в index.html:
<script src="node_modules/underscore/underscore.js"></script>
Это приводит к той же ошибке, что и выше. Также получите 404 для underscore.js?? Это проблема конфигурации ворчания или что-то еще?
npm install underscore --save-dev, вам нужно будет использовать что-то вроде Browserify, чтобы использовать его в браузере. Если вы не хотите этого делать, вам нужно установить через Bower и включить тег script в свой html, прежде чем включать angular. Также отбросьте флаг--save-dev, вместо этого используйте только--save, так как это НЕ зависимость разработки. - person deowk   schedule 21.04.2015