Webpack - критическая зависимость: запрос зависимости - выражение

Я получаю три предупреждающих сообщения при импорте request в проекте barebone webpack. Минимальный пример для воспроизведения ошибки доступен на GitHub (запустите npm install и npm start).

Critical dependency: the request of a dependency is an expression

Как я могу избавиться от этого предупреждения?


Дополнительная информация:

Webpack пытается разрешить require вызовы статически, чтобы сделать минимальный пакет. Когда библиотека использует переменные в требуемом вызове (например, эти строки в ajv), Webpack не может их устранить статически и импортирует весь пакет.

Мое обоснование заключается в том, что этот динамический импорт нежелателен в производстве, а код лучше всего хранить без предупреждения. Это означает, что я хочу любое решение, которое решает проблему. Например:.

  • Вручную настроить webpack для импорта необходимых библиотек и предотвращения появления предупреждений.
  • Добавление файла hack.js в мой проект, который каким-то образом переопределяет требуемые вызовы.
  • Обновление моих библиотек. ajv-5.0.1-beta.3 имеет исправление, которое блокирует предупреждения. Однако, если я хочу использовать его, мне нужно подождать, пока он не будет выпущен, а затем до har-validator и request отпустите последующие обновления. Если есть способ заставить har-validator использовать бета-версию ajv, это решит мою проблему.
  • Другое

Ответы

Ответ 1

Решено с помощью npm install [email protected] --save

По мнению авторов ajv, проблема, скорее всего, будет решена в последней версии request через несколько недель.

Ответ 2

Замените это

new webpack.ContextReplacementPlugin(
        /angular(\\|\/)core(\\|\/)@angular/,
        helpers.root('./src'), // location of your src
        {} // a map of your routes
    ),

с этим -

new webpack.ContextReplacementPlugin( /(.+)?angular(\\|\/)core(.+)?/, root('./src'), {} )