2015-04-04 16 views
13

Jestem nowym użytkownikiem routera reagowania (https://github.com/rackt/react-router). Włączyłem go po reagują tak:Błąd routera-reaktu: super-wyrażenie musi mieć wartość zerową lub funkcję

<script src="http://fb.me/react-0.12.2.js"></script> 
<script src="https://cdnjs.cloudflare.com/ajax/libs/reactrouter/0.13.2/ReactRouter.js"></script> 

mam błąd: Uncaught TypeError: Super wyrażenie musi być albo zerowy lub funkcją, nie niezdefiniowany

Co zrobiłem źle?

+3

Czy próbowałeś z nowszą wersją React? Teraz jest na "0.13.1". – WiredPrairie

+0

Kto zgłasza błąd? reagować, reagować-router, inny kod javascript? A w której przeglądarce widzisz błąd? – Cristik

+0

To był router reagujący na najnowszą wersję przeglądarki Chrome. – JustWonder

Odpowiedz

7

I sloved problem przez uaktualnienie do wersji 0.13.3 reaguje

npm install [email protected] 
+0

Ah dziękuję! Musiałem również zmienić mój router reakcji na 0.13.3. – cport1

+0

Mam 0.14.7 i mam taki problem – Onza

+0

@Edward: czy zaktualizowałeś również router do najnowszej wersji? – pashaplus

115

Chociaż zostało to rozwiązane, publikuję rozwiązanie, ponieważ miałem podobny problem. Mam nadzieję, że będzie to pomocne dla kogoś innego.

Nie używałem React Router. Używałem React with Webpack, a Babel jako program ładujący. Otrzymałem ten sam błąd, co stwierdził JustWonder.

Używałem klas ES6. Okazuje się, miałem wpisane

class App extends React.component {...} 

Zmiana React.component do React.Component (upper-case 'C') rozwiązało problem dla mnie.

+0

Ta cholerna rzecz rozwiązuje również mój problem. Wygląda na to, że dostaniesz ten błąd, jeśli błędnie napisałeś "React.Component". I jest to wrażliwe na wielkość liter, więc uważajcie na to. –

+0

Umieściłbym Komponenty zamiast Komponentów – Tom

1

ja spotkałem inny scenariusz, w którym może się to zdarzyć.

Posiadałem v0.13.x jako bezpośrednią zależność, a jedna z moich zależności miała v0.12.x - więc dwie kopie React były zawarte w moim pakiecie. Oznaczało to, że składniki korzystające z klas ES6 próbowały uzyskać extend nieistniejącego React.Component (otrzymywały one v0.12.x z React).

ja zdiagnozowano ten problem, patrząc jak wiele kopii reagować były w moim node_modules:

npm ls | grep [email protected] 

który dał mi następujący wynik:

├── [email protected] 
│ └── [email protected] 

Opcja -C dla grep pozwala zobaczyć otaczające linie, więc ponownie sprawdziłem:

npm ls | grep [email protected] -C 5 

Otaczający tekst pozwolił mi zidentyfikować pakiet naruszający prawa.

Powiązane problemy