2015-04-04 2 views
13

Je suis nouveau à reaction-routeur (https://github.com/rackt/react-router). Il est inclus réagir après comme ceci:React-routeur erreur: super expression doit être soit nulle ou une fonction

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

J'ai eu une erreur: Uncaught TypeError: Super expression doit être soit nul ou une fonction, pas non défini

Qu'est-ce que je fait de mal?

+3

avez-vous essayé avec une nouvelle version de React? C'est à '0.13.1' maintenant. – WiredPrairie

+0

Qui lance l'erreur? réagir, réagir-routeur, autre code javascript? Et dans quel navigateur voyez-vous l'erreur? – Cristik

+0

Il était reacteur-routeur sur la dernière version du navigateur Chrome. – JustWonder

Répondre

7

Je sloved la question par la mise à niveau réagir la version à 0.13.3

npm install [email protected] 
+0

Ah merci! J'ai également dû changer mon routeur de réaction à 0.13.3. – cport1

+0

J'ai le 0.14.7 et j'ai un tel problème – Onza

+0

@Edward: avez-vous mis à jour le routeur de réaction également à la dernière version? – pashaplus

115

Bien que cela a été résolu, je poste une solution depuis que j'ai eu un problème similaire. J'espère que cela sera utile à quelqu'un d'autre.

Je n'utilisais pas React Router. J'utilisais React avec Webpack, avec Babel comme chargeur. Je recevais la même erreur que celle indiquée par JustWonder.

J'utilisais des classes ES6. Active, j'avais tapé

class App extends React.component {...} 

Changer React.component à React.Component (majuscules « C ») a résolu le problème pour moi.

+0

Cette putain de chose résout mon problème aussi. On dirait que vous obtiendrez cette erreur si vous avez mal orthographié "React.Component". Et il est sensible à la casse, alors surveillez les gars. –

+0

Je mettrais des composants au lieu du composant – Tom

1

j'ai rencontré un autre scénario où cela peut se produire.

J'avais v0.13.x comme une dépendance directe, et une de mes dépendances avait v0.12.x - donc deux copies de React ont été incluses dans mon paquet. Cela signifiait que les composants utilisant les classes ES6 essayaient de extend un React.Component inexistant (ils obtenaient le v0.12.x de React).

Je reçu un diagnostic de cette question en examinant le nombre de copies de réagir étaient dans mon node_modules:

npm ls | grep [email protected] 

Ce qui m'a donné le résultat suivant:

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

L'option -C pour grep vous permet de voir lignes environnantes, donc j'ai re-couru:

npm ls | grep [email protected] -C 5 

Le texte environnant m'a permis d'identifier le paquet incriminé.