2015-04-04 15 views
13

Sono nuovo al router di risposta (https://github.com/rackt/react-router). Ho inserito dopo reagire in questo modo:Errore React-router: super espressione deve essere nullo o una funzione

<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> 

ho ottenuto un errore: TypeError Uncaught: Super espressione deve essere o nullo o di una funzione, non undefined

Che cosa ho fatto di sbagliato?

+3

hai provato con una versione più recente di React? È a 0.13.1 ora. – WiredPrairie

+0

Chi lancia l'errore? reagire, reagire-router, altro codice javascript? E in quale browser vedi l'errore? – Cristik

+0

E 'stato react-router sull'ultima versione del browser Chrome. – JustWonder

risposta

7

ho sloved il problema aggiornamento reagire versione a 0.13.3

npm install [email protected] 
+0

Ah grazie! Ho anche dovuto cambiare il mio react-router a 0.13.3. – cport1

+0

Ho il 0.14.7 e ho ottenuto tale problema – Onza

+0

@Edward: hai aggiornato il router anche alla versione più recente? – pashaplus

115

Anche se è stato risolto, sto pubblicando una soluzione poiché ho avuto un problema simile. Spero che sarà utile a qualcun altro.

Non stavo usando React Router. Stavo usando React con Webpack, con Babel come loader. Stavo ottenendo lo stesso errore dichiarato da JustWonder.

Stavo usando le classi ES6. Risulta, avevo digitato

class App extends React.component {...} 

Modifica React.component a React.Component (maiuscolo 'C'), ha risolto il problema per me.

+0

Questa dannata cosa risolve anche il mio problema. Sembra che otterrai questo errore se hai sbagliato a scrivere "React.Component". Ed è case sensitive quindi attenzione per ragazzi. –

+0

Avrei messo i componenti al posto del componente – Tom

1

ho incontrato un altro scenario in cui questo può accadere.

Avevo v0.13.x come dipendenza diretta e una delle mie dipendenze era v0.12.x - quindi due copie di React erano incluse nel mio pacchetto. Ciò significava che i componenti che utilizzavano le classi ES6 stavano tentando di creare uno extend inesistente React.Component (stavano ottenendo lo v0.12.x di React).

ho diagnosticato questo problema, cercando quante copie di reagire erano nel mio node_modules:

npm ls | grep [email protected] 

che mi ha dato il seguente risultato:

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

L'opzione -C per grep permette di vedere linee circostanti, quindi ho ripetuto:

npm ls | grep [email protected] -C 5 

Il testo circostante mi ha permesso di identificare il pacchetto offendente.

Problemi correlati