web-dev-qa-db-fra.com

Erreur de routeur de réaction: la super expression doit être nulle ou une fonction

Je suis nouveau à réagir routeur ( https://github.com/rackt/react-router ). Je l'ai inclus après réagis comme ceci:

<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 une erreur: Uncaught TypeError: La super expression doit être nulle ou une fonction, pas indéfinie

Qu'ai-je fait de mal?

13
JustWonder

J'ai sloved le problème en mettant à jour la version de réaction à 0.13.3

npm install [email protected]
7
pashaplus

Bien que cela ait été résolu, je publie une solution car j'avais 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. J'avais la même erreur que celle déclarée par JustWonder.

J'utilisais les classes ES6. Il s'avère que j'avais tapé

class App extends React.component {...}

Changer React.component en React.Component ('C' majuscule) a résolu le problème pour moi.

115
Jacob Turner

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

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

J'ai diagnostiqué ce problème en recherchant le nombre d'exemplaires de react dans mon node_modules:

npm ls | grep react@

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

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

L'option -C pour grep vous permet de voir les lignes environnantes, alors j'ai ré-exécuté:

npm ls | grep [email protected] -C 5

Le texte qui l’entoure me permettait d’identifier le colis en cause.

1
WickyNilliams