web-dev-qa-db-fra.com

Karma webpack produisant plusieurs "webpack: attendez que le paquet soit terminé"

Après les dernières versions de webpack 1.14.0/karma 1.4.0/karma-webpack 2.2.0, je vois maintenant beaucoup de ces messages lorsque karma lance la construction de son webpack. 

webpack: wait until bundle finished:

Parfois, je vois jusqu'à 6 à 8 d'entre eux et ils semblent prolonger la construction. Par exemple, ceci:

Hash: 255562a2a96fffe34fae
Version: webpack 1.14.0
Time: 408ms
webpack: bundle is now VALID.
webpack: bundle is now INVALID.
webpack: wait until bundle finished:
webpack: wait until bundle finished:
webpack: wait until bundle finished:
webpack: wait until bundle finished:
webpack: wait until bundle finished:
webpack: wait until bundle finished:
ts-loader: Using [email protected] and C:\git\project\tsconfig.json

Jusqu'ici, ça n'a pas arrêté ma construction, mais à tout le moins, il me semble que quelque chose est en train de se bloquer, même temporairement. Quelqu'un d'autre a vu ça? Je voudrais nettoyer cela s’il ya quelque chose de mon côté, mais comme je l’ai dit, mes fichiers de configuration n’ont pas changé. Pourtant, cela est maintenant apparu avec le flot récent de communiqués de la famille de produits karma/webpack dans le dernières 3 semaines.

Mes questions sont:

  1. Que signifie ce message?
  2. Que peut-on faire pour résoudre le problème qui les crée?
18
Kim Gentes

karma-webpack traite chaque fichier de spécifications comme un point d’entrée distinct et produit un ensemble de packs Web distinct pour chacun. Ainsi, les journaux de votre console sont corrects et n’indiquent aucun problème. 

Si vous souhaitez vous débarrasser des multiples sorties webpack: wait until bundle finished:, vous pouvez désactiver la journalisation des informations webpack-dev-middleware dans votre configuration de karma:

...

webpackMiddleware: {
  noInfo: true
},

...

En savoir plus sur la liste complète des options possibles pour la section webpackMiddleware dans le fichier Lisez-moi de webpack-dev-middleware package. 

17
dan

D'accord. J'ai travaillé avec ça et on dirait que j'ai trouvé une solution.

Dans mon cas, les problèmes étaient dans plusieurs fichiers, y compris dans le fichier Karma.conf. 

Avant j'avais cette fichiers configuration

files: [
            src/**/*.spec.js'
        ],
        preprocessors: {
            'src/**/*.spec.js': ['webpack']
        },

ressemble à karma lancer une compilation webpack pour chaque fichier inclus et nécessite une mémoire (pour conserver un fichier compilé avant les tests). C'est pourquoi nous avons une fuite de mémoire et un problème de ressources/temps. 

J'ai donc résolu ce problème en apportant les modifications suivantes: exactement comme je m'y attendais :)

files: [
            'src/__testsEntry__.spec.js'
        ],

Dans ce fichier j'ai demandé tous les tests via cette construction

const req = require.context("./", true, /.+.spec.js/igm);
req.keys().forEach(function(key) {
    req(key);
});

Cela a résolu mon problème et maintenant je n'ai qu'une compilation Webpack pour un fichier. Il a augmenté la vitesse du processus de test du projet et des ressources informatiques. 

J'espère que cela vous aidera ... Salutations distinguées.

P.S. Il y a une capture d'écran avec un rapport montrant que chaque suite de tests est apparue comme un groupe différent via karma-spec-reporter  test report

Voici une démonstration d'un seul processus de regroupement dans le cas de test .  an one bundling process

Mise à jour 2: Dans cette solution, il existe un problème de débogage en cas d'échec du test, car Nous verrons dans un rapport le numéro de ligne de notre fichier testEntry (et non un fichier d'origine). Donc, jusqu'à ce que nous trouvions une autre solution possible, nous pouvons utiliser certaines conventions de nom de vos suites de tests pour améliorer la compréhension - dans quel fichier notre test a échoué.

 enter image description here

10
Velidan

Après avoir vérifié les options de webpack-dev-middleware , j'ai découvert que vous pouviez vous débarrasser de la sortie "wdm」: wait each Bundle: noop "en spécifiant ce qui suit dans votre karma.conf.js (juste en dessous de la reporters section):

webpackMiddleware: {
  logLevel: 'error'
}

Testé avec:

  • karma 3.1.1 
  • karma-webpack 3.0.5
1
Benny Neugebauer