Получение MaxListenersExceededWarning при создании приложения React - PullRequest
0 голосов
/ 18 января 2020

У меня есть приложение React, созданное в CRA, и оно выбрасывается. Когда я пытаюсь собрать приложение, используя npm run build (node ​​scripts / build. js), я получаю предупреждение:

(node:6) MaxListenersExceededWarning: Possible EventEmitter memory leak detected. 11 SIGINT listeners added. Use emitter.setMaxListeners() to increase limit.

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

Ответы [ 2 ]

1 голос
/ 18 января 2020

Насколько важно это предупреждение, и как мне решить эту проблему?

Это зависит от того, что делает ваш код.

Если у вас есть более 10 законных слушателей какого-либо объекта EventEmitter и все слушатели имеют уровень git, то предупреждение можно игнорировать или вы можете использовать emitter.setMaxListeners(), чтобы установить его на много более высокое значение предупреждения.

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

Вот пример случая из другого сегодняшнего вопроса, когда слушателя нужно было удалить. Вы можете увидеть этот пример здесь:

Node.JS События, отправленные сервером: маршрут продолжает работать после res.end (), что приводит к ошибке ERR_STREAM_WRITE_AFTER_END

Если вы показали нам Ваш реальный код, который добавляет слушателей и контекст вокруг него, мы можем более точно сообщить вам, следует ли вам удалять слушателя или нет.

1 голос
/ 18 января 2020

Вы можете увеличить лимит, используя emitter.setMaxListeners(n) Лучшим подходом является использование ловушек жизненного цикла React и отписки от слушателей.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...