Karma webpack выводит несколько " webpack: дождитесь завершения пакета"

после последних выпусков webpack 1.14.0 / karma 1.4.0 / karma-webpack 2.2.0, я теперь вижу много этих сообщений, когда karma начинает свою сборку webpack.

webpack: wait until bundle finished:

иногда я вижу целых 6-8 из них, и они, кажется, делают сборку длиннее. Например, это:

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 typescript@2.1.5 and C:gitprojecttsconfig.json

до сих пор это не остановило мою сборку, но, по крайней мере, кажется, что что-то теперь блокируется, если даже временно. Кто-нибудь еще это видел? Я бы хотел почистить это. если это что-то на моем конце, но, как я уже сказал, Мои файлы конфигурации не изменились, но теперь это появилось с недавним потоком выпусков из семейства продуктов karma/webpack за последние 3 недели.

мои вопросы:

  1. что означает это сообщение?
  2. что можно сделать чтобы исправить проблему, создавая их?

2 ответов


karma-webpack рассматривает каждый файл спецификации как отдельную точку входа и создает отдельный пакет webpack для каждого. Таким образом, ваши журналы консоли просто прекрасны и не указывают на какие-либо проблемы.

Если вы хотите избавиться от несколько webpack: wait until bundle finished: выходы вы можете отключить webpack-dev-middleware info вход в конфигурацию karma:

...

webpackMiddleware: {
  noInfo: true
},

...

Прочитайте больше о полном списке возможных вариантов для раздела webpackMiddleware в readme webpack-dev-промежуточное ПО.


- ладно. Работал с этим и, похоже, нашел решение.

в моем случае проблемы были в нескольких файлах, в том числе в карме.conf

до того, как у меня было это файлы конфигурация

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

похоже, что karma запускает компиляцию webpack для каждого включенного файла, и для этого требуется память (чтобы сохранить скомпилированный файл перед тестами). Так вот почему у нас есть утечка памяти и ресурсов/времени.

Так я решил эту проблему к этим изменениям: Я создал один файл testEntry в моем корне приложения (я ожидаю, что Karma будет работать только с ним, и он запустит компиляцию webpack только один раз, для этого файла), и он работает точно так, как я ожидал :)

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

в этом файле мне потребовались все тесты через эту конструкцию

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

это решило мою проблему, и теперь у меня есть только одна компиляция webpack для одного файла. Это увеличило скорость процесса тестирования проекта и ресурсов ПК.

Надежда это помогает. С уважением.

P. S. Есть скриншот с отчетом, чтобы продемонстрировать, что каждый набор тестов, показали, как различные группы через карма-спец-репортер test report

вот демонстрация только одного процесса связывания в тестовом примере. an one bundling process

обновление 2: в этом решении существует проблема с отладкой в случае сбоя теста, потому что мы увидим в отчете строки число наших testEntry file (не исходный файл). Поэтому, пока мы не найдем другое возможное решение, мы можем использовать некоторые соглашения по именам ваших наборов тестов для улучшения понимания-в каком файле наш тест не удался.

enter image description here