AngularJS Uncaught Error: ошибка [$injector:modulerr] после использования gulp-concat

У меня есть приложение Angular, которое работает, если я загружаю все сценарии вручную, но терпит неудачу, когда я пытаюсь использовать gulp-concat для использования одного файла bundle.js.

Я загружаю AngularJS и jQuery из CDN перед остальными сценариями, но я использую ngSanitize и ngRoute из локальных файлов. Как я уже сказал, все работает, когда я загружаю их все по отдельности.

Кажется, jQuery работает (некоторые задачи, связанные с jQuery, работают на сайте при использовании сценария bundle.js).

Я получаю 2 ошибки консоли в следующем порядке: Uncaught TypeError: $(...).ready(...) is not a function и Uncaught Error: [$injector:modulerr].

Я проверил строку, где говорится, что первая ошибка возникает в файле bundle.js, но я даже не использую там .ready(), поэтому я немного запутался.

Я также пытался загрузить модули ngSantize и ngRoute из CDN вместо того, чтобы использовать их локально, но это не сработало. Я уже читал здесь на SO, чтобы попробовать использовать угловой ресурс, который я пробовал, но не повезло. Я также использую gulp-order, чтобы убедиться, что все загружается в том же порядке, в котором я загружал его вручную.

Вот мой gulpfile.js:

var gulp = require('gulp');
var concat = require('gulp-concat');
var order = require("gulp-order");

gulp.task('scripts', function() {
  return gulp.src('./js/**/*.js')
  .pipe(order([
    "main.js",
    "others/*.js",
    "controllers/*.js",
    "modules/*.js",
    "directives/*.js",
    "filters/*.js"
  ]))
  .pipe(concat('bundle.js'))
  .pipe(gulp.dest('./js/'));
});

gulp.task('default', ['scripts']);

Когда я просматриваю файл bundle.js, оказывается, что все там есть, и в том же порядке, как если бы я загрузил все это вручную.

Есть ли что-то еще, что мне нужно сделать?

ОБНОВЛЕНИЕ

Я также попытался загрузить последние минимизированные версии AngularJS и jQuery и объединить их в свой файл bundle.js, но получаю ту же ошибку Uncaught Error: [$injector:modulerr]. Тот же результат, когда я НЕ включаю их в bundle.js, а просто вызываю их перед bundle.js.


person Chirpizard    schedule 12.03.2016    source источник
comment
Вы также должны включить такие зависимости, как angular, файл jquery. Gulp не получает cdn js.   -  person kmhigashioka    schedule 12.03.2016
comment
@kazupooot Спасибо за предложение. Я загрузил и поместил уменьшенные версии jQuery и AngularJS в задачу gulp-concat, и обе они были добавлены вверху файла bundle.js. Но я получаю ту же проблему. jQuery, по крайней мере, кажется, обнаруживает, потому что Bootstrap работает ... если jQuery не найден, то Bootstrap выдает конкретную ошибку в консоли, и я этого не понимаю.   -  person Chirpizard    schedule 12.03.2016
comment
@Chirpizard, ты решил проблему? У меня такая же ошибка.   -  person Hadi Rasouli    schedule 01.07.2016


Ответы (1)


Gulp не влияет на строку, поэтому в config. Сделайте состояние и поставщика маршрутизатора строковыми, как показано в примере.

var myApp = angular.module('myApp', ['ui.router'])         

// configuring our routes 
myApp.config(['$stateProvider', '$urlRouterProvider',function($stateProvider, $urlRouterProvider) {    
    $stateProvider    
        // route to show our basic form in login page
        .state('login', {
            url: '/login',
            templateUrl: 'views/login.html',
            controller: 'LoginController'
        })
}]);
person Bipin Shilpakar    schedule 31.05.2017