Подтвердить что ты не робот

Force ReactJS, чтобы бросать реальные ошибки, когда проверка propTypes терпит неудачу?

В настоящее время, если проверка propType не выполняется, ReactJS использует console.warn для выдачи предупреждения. Мне действительно нужна действительно ошибка в режиме dev, так что это может привести к сбою нашей непрерывной интеграции, а не просто распечатать сообщение, которое может быть потеряно в случайном порядке.

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

Предполагая, что ReactJS не обеспечит лучшую поддержку для этого в ближайшее время, , что лучше всего обходится? Пока лучшее, что я придумал, это переопределить console.warn для тестов, например

console.warn = function(msg) {
    throw new Error(msg);
};

Недостатком этого является то, что в тестах может быть сложно реализовать, и он не зависит от конкретного ответа, поэтому также нужно обрабатывать другие вызовы console.warn.

4b9b3361

Ответ 1

FlowType, представленный Facebook вчера, звучит так же, как и вы. Он может анализировать ваш код, выводить типы и бросать ошибки во время компиляции.

В него включена поддержка аргументов React и propTypes: http://flowtype.org/docs/react-example.html#property-use

Ответ 2

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

let warn = console.warn;
console.warn = function(warning) {
  if (/(Invalid prop|Failed propType)/.test(warning)) {
    throw new Error(warning);
  }
  warn.apply(console, arguments);
};