Подписаться на блог

circular-dependency-plugin

Было ли у вас такое, что при develop-сборке все отлично работает, а при production-сборке приложение падает с несколько пугающей ошибкой?

TypeError: Super expression must either be null or a function, not undefined

Уверен, что было, причем часто проблема возникает из ниоткуда, что очень неприятно, так еще и при исследовании всплывает, что файлики-то все на месте, импорты-экспорты тоже правильные, в чем же дело? А дело в циклических зависимостях.

О том, в чем вообще проблема и какие есть способы ее решить, можно почитать в посте «How to fix nasty circular dependency issues once and for all in JavaScript & TypeScript», откуда я и взял картинку ниже.

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

Резво ставьте circular-dependency-plugin и подключайте его в конфиг, и будет вам счастье.

// webpack.config.js
const CircularDependencyPlugin = require('circular-dependency-plugin')

module.exports = {
  plugins: [
    new CircularDependencyPlugin({
      exclude: /node_modules/,
      cwd: process.cwd()
    })
  ]
}