Подтвердить что ты не робот

Ошибка React-router: супер-выражение должно быть нулевым или функцией

Я новичок в реакции-маршрутизаторе (https://github.com/rackt/react-router). Я включил его после реакции следующим образом:

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

У меня есть ошибка: Uncaught TypeError: выражение Super должно быть нулевым или функцией, а не undefined

Что я сделал не так?

4b9b3361

Ответ 1

Я задал вопрос, обновив версию реакции до 0,13.3

npm install [email protected]

Ответ 2

Хотя это было решено, я отправляю решение, так как у меня была аналогичная проблема. Надеюсь, это будет полезно кому-то другому.

Я не использовал React Router. Я использовал React с Webpack, с Babel в качестве загрузчика. Я получал ту же ошибку, что и JustWonder.

Я использовал классы ES6. Оказывается, я набрал

class App extends React.component {...}

Изменение React.component на React.component (верхний регистр C) решило проблему для меня.

Ответ 3

Я столкнулся с другим сценарием, где это может произойти.

У меня была v0.13.x как прямая зависимость, и одна из моих зависимостей имела v0.12.x - поэтому в мой пакет были включены две копии React. Это означало, что компоненты, использующие классы ES6, пытались extend несуществующие React.Component (они получали v0.12.x of React).

Я поставил диагноз этой проблемы, посмотрев, сколько копий ответов было в моем node_modules:

npm ls | grep [email protected]

Что дало мне следующий результат:

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

Параметр -C для grep позволяет вам видеть окружающие линии, поэтому я снова запустил:

npm ls | grep [email protected] -C 5

Окружающий текст позволил мне определить оскорбительный пакет.