2016-03-12 1 views
0

J'ai une application Angular qui fonctionne si je charge manuellement dans tous les scripts, mais échoue une fois que j'essaie d'utiliser gulp-concat pour utiliser un seul fichier bundle.js.

Je charge AngularJS et jQuery depuis un CDN avant le reste des scripts, mais j'utilise ngSanitize et ngRoute à partir de fichiers locaux. Comme je l'ai dit, tout fonctionne quand je les charge tous séparément. JQuery semble fonctionner (certaines tâches liées à jQuery fonctionnent sur le site lors de l'utilisation du script bundle.js).

Je reçois 2 erreurs de la console dans cet ordre: Uncaught TypeError: $(...).ready(...) is not a function et Uncaught Error: [$injector:modulerr].

J'ai vérifié la ligne où il dit que la première erreur se produit dans le fichier bundle.js, mais je n'utilise même pas un .ready() là, donc je suis un peu confus.

J'ai également essayé de charger dans les modules ngSantize et ngRoute à partir d'un CDN au lieu de les utiliser localement mais cela n'a pas fonctionné. J'ai déjà lu ici sur SO pour essayer d'utiliser angulaire-ressource, que j'ai essayé, mais n'a pas eu de chance. J'utilise aussi gulp-order pour m'assurer que tout est chargé dans le même ordre que celui que j'ai chargé manuellement.

Voici mes 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']); 

Lorsque j'examine le fichier bundle.js, tout semble être là, et dans le même ordre que si je l'avais chargé tout manuellement.

Y a-t-il autre chose que je dois faire?

MISE À JOUR

J'ai aussi essayé de télécharger les dernières versions de minified AngularJS et jQuery et les regrouper dans mon fichier bundle.js, mais je suis obtenir la même erreur Uncaught Error: [$injector:modulerr]. Le même résultat quand je ne les inclut pas dans bundle.js mais les appelle juste avant bundle.js.

+0

Vous devez également inclure des dépendances telles que le fichier angulaire jquery. Gulp ne reçoit pas cdn js. – kazupooot

+0

@kazupooot Merci pour votre suggestion. J'ai téléchargé et mis les versions minifiées de jQuery et AngularJS dans la tâche gulp-concat, et les deux ont été ajoutées en haut du fichier bundle.js. Mais je reçois le même problème. jQuery au moins semble détecter parce que Bootstrap fonctionne ... si aucun jQuery n'est trouvé alors Bootstrap donne une erreur particulière dans la console, et je ne comprends pas. – Chirpizard

+0

@Chirpizard avez-vous résolu le problème? J'ai la même erreur. –

Répondre

0

Gulp n'affecte pas la chaîne ainsi dans la configuration. Définissez l'état et le fournisseur du routeur sur une chaîne comme indiqué dans l'exemple.

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' 
     }) 
}]);