2015-04-15 9 views

Odpowiedz

15

Metodę console.warn można zamienić na własną i wyrzucać, gdy dostarczona wiadomość pasuje do określonego wzorca.

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

świetne rozwiązanie, ale musiałem użyć 'console.error', aby uzyskać tę pracę z reagowaniem 0.14 –

+0

To jest dobre. Jednak ponieważ reaguje tylko ostrzega, gdy nie pokazuje każdego testu, który spowodowałby ostrzeżenie, tylko pierwsze. Oznacza to, że dostajesz jeden test awaryjny, naprawiasz go, a następnie kończy się niepowodzeniem. Byłoby wspaniale, gdyby był sposób, aby React ostrzegał za każdym razem, więc każdy test, który powoduje ostrzeżenie ... Jakieś pomysły? –

+0

Możesz spróbować użyć 'console.error (warning)' zamiast rzucania błędu. –

5

Niewielkie poprawki przyjętej odpowiedź: console.error zamiast console.warn jak spain-train wspomniano, dodane Zmarnowana typu prop 'do regex, gdyż tylko wtedy pracuje z React 15.3.1 i wykonane kod przyjazny bardziej rygorystyczne eslint.

const error = console.error; 
console.error = function(warning, ...args) { 
    if (/(Invalid prop|Failed prop type)/.test(warning)) { 
    throw new Error(warning); 
    } 
    error.apply(console, [warning, ...args]); 
}; 
Powiązane problemy