Я использую реагирование.
Когда я запускаю код ниже, браузер говорит:
Uncaught TypeError: Супер-выражение должно быть либо нулевым, либо функцией, а не неопределенным
Любые намеки на то, что не так, будут оценены.
Сначала строка, используемая для компиляции кода:
browserify -t reactify -t babelify examples/temp.jsx -o examples/public/app.js
И код:
var React = require('react');
class HelloMessage extends React.Component {
render() {
return <div>Hello </div>;
}
}
ОБНОВЛЕНИЕ: после трех дней горения в адском огне я обнаружил, что не использую последнюю версию реакции.
Установить глобально:
sudo npm install -g react@0.13.2
установить локально:
npm install react@0.13.2
убедитесь, что браузер использует правильную версию:
<script type="text/javascript" src="react-0.13.2.js"></script>
Надеюсь, это спасет кого-то еще три дня драгоценной жизни.
reactjs
ecmascript-6
Герцог Дугал
источник
источник
extends React.component
(в нижнем регистреc
).Components
вместоComponent
:). Ваш комментарий помог КСТАТИОтветы:
Имена классов
Во-первых, если вы уверены, что выходите из класса с правильно названным именем, например React.Component , а не React.component или React.createComponent, вам может потребоваться обновить версию React. Смотрите ответы ниже для получения дополнительной информации о классах, чтобы продолжить.
Обновление Реакция
Начиная с версии 0.13.0 React поддерживает только классы в стиле ES6 (см. Их официальное сообщение в блоге о введении поддержки здесь .
До этого при использовании:
Вы пытались использовать ключевые слова ES6 (
extends
) для создания подкласса в классе, который не был определен с помощью ES6class
. Вероятно, именно поэтому вы столкнулись со странным поведением сsuper
определениями и т. Д.Итак, да, TL; DR - обновление до React v0.13.x.
Круговые зависимости
Это также может произойти, если у вас есть круговая структура импорта. Один модуль импортирует другой, и наоборот. В этом случае вам просто нужно реорганизовать свой код, чтобы избежать его. Больше информации
источник
React.component
вместоReact.Component
extends
. Попробуйте этоvar x = function(){}; class y extends x {}
class App extends React.Component () {...}
- которая должна быть исправленаclass App extends React.Component {...}
(без()
конца)Это означает, что вы хотите подкласс чего-то, что должно быть
Class
, но естьundefined
. Причины могут быть:Class extends ...
, так что вы расширяете неопределенную переменнуюimport ... from
, поэтому вы импортируетеundefined
из модуляundefined
)export ...
операторе модуля , поэтому он экспортирует неопределенную переменнуюexport
оператор вообще, поэтому он просто экспортируетundefined
источник
import {Foo} from 'bar'
вместоimport Foo from 'bar'
. Поэтому проголосовал.class Thing extends React.Component() {
- Я должен был удалить()
Это также может быть вызвано ошибкой опечатки, поэтому вместо
Component
заглавной буквы C вы получитеcomponent
более низкий c, например:Примечание . Источником этой ошибки может быть то, что существует,
React
и мы автоматически думаем, что следующим должен быть метод реагирования или свойство, начинающееся со строчной буквы, но на самом деле это другой класс (Component
), который должен начинаться с заглавной буквы ,источник
В моем случае, с реакцией-родной, ошибка была в том, что у меня было
вместо того
источник
Я испытал это, когда пропустил оператор экспорта для класса JSX.
Например:
источник
Вы также можете получить это, если вы пытаетесь выполнить
React.Component
с ошибкой()
в вашем определении класса.Что мне иногда удается сделать, когда я преобразовываю функциональный компонент без состояния в класс.
источник
Я видел эту ошибку, когда у вас есть круговая зависимость.
источник
Для любых других лиц, которые могут развить эту проблему. Вы также можете проверить, что
component
метод вReact.Component
заглавной. У меня была та же самая проблема, и это вызвало то, что я написал:Я изменил это на
и все работало хорошо
источник
Я получил это, когда у меня была опечатка при импорте:
источник
Проверьте, что классы, которые вы расширяете, действительно существуют, некоторые методы React устарели. Это также может быть ошибкой опечатки
'React.Components'
вместо'React.Component'
Удачи!!
источник
React.component
вместоReact.Component
(обратите внимание на пропущеннуюЯ собираюсь предложить другое возможное решение, которое сработало для меня. Я использовал индекс удобства, чтобы собрать все компоненты в один файл.
Я не верю, что на момент написания этой статьи она официально поддерживалась babel и добавляла печатную машинку в оборот, однако я видел, что она используется во многих проектах и определенно удобна.
Однако при использовании в сочетании с наследованием, похоже, выдает ошибку, представленную в вопросе выше.
Простое решение заключается в том, что модули, выступающие в роли родителей, необходимо импортировать напрямую, а не через файл индекса удобства.
./src/components/index.js
./src/components/com-1/Com1.js
./src/components/com-3/Com3.js
./src/components/com-3/Com3.js
источник
Это сработало для меня:
источник
Webpack 4 чанков и хешей с увеличением с помощью TerserPlugin
Это может произойти, когда Webpack использует куски и хэши с минификацией и расклиниванием через TerserPlugin (в настоящее время на версии 1.2.3). В моем случае ошибка сузилась до плагинов Terser моего
vendors.[contenthash].js
пакета, который содержит мойnode_modules
. Все работало, когда не использовались хэши.Решением было исключить расслоение в опциях uglification:
Больше информации
источник
У меня та же проблема, просто изменить с
Navigator
на{Navigator}
источник
export Foo ... import { Foo }
- или -export default Foo ... import Foo
Не правильно для этого ответа, но для других с той же ошибкой моя нелепо глупая ошибка потенциально может помочь.
Глупо, моя проблема заключалась в использовании функции обозначения включением () после имени класса .
Убедитесь, что ваш синтаксис правильный. И вы импортировали и экспортировали любые внешние компоненты / модули с правильными именами и путями.
Этот шаблон должен нормально работать, если у вас установлена новая версия реакции:
источник
Мои условия
Решение моей проблемы
Понизьте Froala до версии 3.0.
Что-то в v3.1 сломало процесс сборки приложения Create React.
Обновление: используйте реагирующие скрипты v3.3
Мы обнаружили, что существует проблема между React Scripts 3.2 и Froala 3.1.
Обновление React Scripts v3.3 позволило нам перейти на Froala 3.1.
источник
Я написала
вместо
React.Component
этого была моя проблема)) и искал этого больше получаса.источник
В моем случае я использовал:
что было неправильно, но правильно:
также убедитесь, что есть
√
React.Component
НЕ
ˣ
React.component
илиReact.Components
источник
Это может быть сторонний пакет, вызывающий это. В нашем случае это была реакция-ослепление . У нас есть настройки, аналогичные настройкам @steine ( см. Ответ выше ).
Чтобы найти проблемный пакет, я запустил сборку веб-пакета локально в производственном режиме и, таким образом, смог найти проблемный пакет в трассировке стека. Так что для нас это дало решение, и я смог сохранить угилизацию.
источник
Используя Babel (5.8), я получаю ту же ошибку, если пытаюсь использовать выражение
export default
в сочетании с некоторыми другимиexport
:источник
Вот один ответ:
источник
В моем случае я исправил эту ошибку путем изменения
export default class yourComponent extends React.Component() {}
наexport default class yourComponent extends React.Component {}
. Да, удалить скобки()
исправили ошибку.источник
Я столкнулся с этой ошибкой при импорте компонентов, таких как:
вместо того
источник
Посмотрите, если у вас есть ошибка опечатки в вашем импорте или поколении, это может быть просто так.
источник
Измените
import React from 'react-dom
наimport React, {Component} from 'react'
И измените
class Classname extends React.Component
наclass Classname extends Component
Если вы используете последнюю версию React (16.8.6 на данный момент) .
источник
Если вы получаете эту ошибку и используете Browserify и browserify- shim (как в задаче Grunt), вы, возможно, испытали тупой момент, как я, когда вам непреднамеренно сказали
browserify-shim
рассматривать React как часть глобального пространства имен (например, загружен из CDN).Если вы хотите, чтобы Browserify включал React как часть преобразования, а не как отдельный файл, убедитесь, что строка
"react": "global:React"
не отображается в"browserify-shim"
разделе вашегоpackages.json
файла.источник
Uncaught Error: Cannot find module 'react'
после удаления конфигурации browserify-shim? По сути, я хочу продолжать реагировать как внешнюю зависимость, но browserify, похоже, не понимает, как создать пакет и сохранить React внешним. Это может или не может быть, потому что модуль, который я включаю в мою точку входа browserify, реагирует как зависимость.Это также может произойти, если вы использовали
require
вместоimport
кода.источник
Со мной тоже случилось, когда я использовал это:
Вместо правильного:
Обратите внимание: - () в первом, который является основной причиной этой проблемы
источник
Для тех, кто использует
react-native
:может выдать эту ошибку.
Принимая во внимание, что
react
прямая ссылка - более стабильный путь:источник
В моем случае это было изменение React.Element на React.Component, которое исправило эту ошибку.
источник