Korzystam z Reagjs.
Po uruchomieniu kodu poniżej przeglądarka mówi:
Uncaught TypeError: Super wyrażenie musi być null lub funkcja, nie może być niezdefiniowana
Wszelkie wskazówki dotyczące tego, co jest złe, będą mile widziane.
Najpierw wiersz użyty do skompilowania kodu:
browserify -t reactify -t babelify examples/temp.jsx -o examples/public/app.js
I kod:
var React = require('react');
class HelloMessage extends React.Component {
render() {
return <div>Hello </div>;
}
}
AKTUALIZACJA: Po spaleniu w piekle przez trzy dni tego problemu stwierdziłem, że nie korzystam z najnowszej wersji reagowania.
Zainstaluj globalnie:
sudo npm install -g react@0.13.2
zainstaluj lokalnie:
npm install react@0.13.2
upewnij się, że przeglądarka również używa właściwej wersji:
<script type="text/javascript" src="react-0.13.2.js"></script>
Mam nadzieję, że to ocali komuś trzy dni cennego życia.
reactjs
ecmascript-6
Książę Dougal
źródło
źródło
extends React.component
(małe literyc
).Components
zamiastComponent
:). Twój komentarz pomógł BTWOdpowiedzi:
Nazwy klas
Po pierwsze, jeśli masz pewność, że rozszerzasz klasę o poprawnej nazwie, np. React.Component , a nie React.component lub React.createComponent, może być konieczne uaktualnienie wersji React. Zobacz odpowiedzi poniżej, aby uzyskać więcej informacji na temat klas, z których można rozszerzyć.
Upgrade React
React obsługuje tylko klasy w stylu ES6 od wersji 0.13.0 (zobacz ich oficjalny post na blogu na wstępie wsparcia tutaj .
Wcześniej podczas korzystania z:
próbowałeś użyć słów kluczowych ES6 (
extends
) do podklasy z klasy, która nie została zdefiniowana za pomocą ES6class
. Prawdopodobnie dlatego zachowywałeś się dziwnie zsuper
definicjami itp.Tak, TL; DR - aktualizacja do React v0.13.x.
Zależności kołowe
Może się to również zdarzyć, jeśli masz cykliczną strukturę importu. Jeden moduł importuje inny i na odwrót. W takim przypadku wystarczy zmodyfikować kod, aby go uniknąć. Więcej informacji
źródło
React.component
zamiastReact.Component
extends
. Spróbuj tegovar x = function(){}; class y extends x {}
class App extends React.Component () {...}
- którą należy poprawićclass App extends React.Component {...}
(bez()
końca)Oznacza to, że chcesz podklasy coś, co powinno być
Class
, ale jestundefined
. Przyczyny mogą być następujące:Class extends ...
, więc rozszerzasz niezdefiniowaną zmiennąimport ... from
, więc importujeszundefined
z modułuundefined
)export ...
instrukcji modułu , więc eksportuje niezdefiniowaną zmiennąexport
w ogóle, więc eksportuje tylkoundefined
źródło
import {Foo} from 'bar'
zamiastimport Foo from 'bar'
. Dlatego głosowałem.class Thing extends React.Component() {
- Musiałem usunąć()
Może to być również spowodowane błędem w literówce, więc zamiast dużej litery
Component
C maszcomponent
niższą wartość c, na przykład:Uwaga: Przyczyną tego błędu może być to, że istnieje
React
i uważamy automatycznie, że następną powinna być metoda lub właściwość reagowania zaczynająca się od małej litery, ale w rzeczywistości jest to kolejna klasa (Component
), która powinna zaczynać się wielką literą .źródło
W moim przypadku, w przypadku reakcji rodzimej, błąd polegał na tym, że miałem
zamiast
źródło
Doświadczyłem tego, gdy brakowało mi instrukcji eksportu dla klasy JSX.
Na przykład:
źródło
Możesz to również otrzymać, jeśli próbujesz wykonać
React.Component
z błędną()
definicją klasy.Co czasem udaje mi się zrobić, kiedy przechodzę z bezpaństwowego komponentu funkcjonalnego do klasy.
źródło
Widziałem ten błąd, gdy masz zależność cykliczną.
źródło
Dla innych osób, które mogą rozwinąć ten problem. Możesz również sprawdzić, czy
component
metoda wReact.Component
jest wielka. Miałem ten sam problem i to, co spowodowało, że napisałem:Zmieniłem to na
i wszystko działało dobrze
źródło
Dostałem to, gdy miałem literówkę przy moim imporcie:
źródło
Sprawdź, czy klasy, które rozszerzasz, faktycznie istnieją, kilka metod React jest amortyzowanych, może to być także błąd literowy
'React.Components'
zamiast'React.Component'
Powodzenia!!
źródło
React.component
zamiastReact.Component
(zauważ wielkąPrzedstawię inne możliwe rozwiązanie, które dla mnie zadziałało. Korzystałem z indeksu wygody, aby zebrać wszystkie komponenty w jeden plik.
Nie wierzę, że w chwili pisania tego jest oficjalnie wspierane przez Babel i rzuca maszynopis na spin - jednak widziałem, że jest używany w wielu projektach i jest zdecydowanie wygodny.
Jednak w połączeniu z dziedziczeniem wydaje się, że generuje błąd przedstawiony w powyższym pytaniu.
Prostym rozwiązaniem jest, aby moduły działające jak rodzice musiały zostać zaimportowane bezpośrednio zamiast przez plik indeksu wygody.
./src/components/index.js
./src/components/com-1/Com1.js
./src/components/com-3/Com3.js
./src/components/com-3/Com3.js
źródło
To działało dla mnie:
źródło
Webpack 4 Chunks and Hashes with Uglification by TerserPlugin
Może się to zdarzyć, gdy Webpack używa fragmentów i skrótów z minimalizacją i nielifikacją za pośrednictwem TerserPlugin (obecnie w wersji 1.2.3). W moim przypadku błąd został zawężony do uglifikacji przez wtyczkę Terser mojego
vendors.[contenthash].js
pakietu, który ją przechowujenode_modules
. Wszystko działało, gdy nie używasz skrótów.Rozwiązaniem było wykluczenie pakietu w opcjach uglifikacji:
Więcej informacji
źródło
Mam ten sam problem, po prostu zmień z
Navigator
na{Navigator}
źródło
export Foo ... import { Foo }
- lub -export default Foo ... import Foo
Niepoprawna dla tej odpowiedzi, ale dla innych z tym samym błędem mój absurdalnie głupi błąd może potencjalnie pomóc.
Głupio, że mój problem polegał na użyciu notacji funkcji poprzez włączenie () po nazwie klasy .
Upewnij się, że Twoja składnia jest poprawna. Zaimportowałeś i wyeksportowałeś zewnętrzne komponenty / moduły z poprawnymi nazwami i ścieżkami.
Ten szablon powinien działać poprawnie, jeśli masz zainstalowaną nową wersję Reaguj:
źródło
Moje warunki
Rozwiązanie mojego problemu
Zmień wersję Froala na v3.0.
Coś w wersji 3.1 złamało nasz proces tworzenia aplikacji Create React.
Aktualizacja: użyj skryptów reagujących w wersji 3.3
Odkryliśmy, że był problem między React Scripts 3.2 a Froala 3.1.
Aktualizacja do skryptów React v3.3 pozwoliła nam na aktualizację do Froala 3.1.
źródło
Napisałem
zamiast
React.Component
tego był mój problem)) i szukałem tego ponad pół godziny.źródło
W moim przypadku korzystałem z:
co było złe, ale poprawne to:
upewnij się również, że nie ma
√
React.Component
NIE
ˣ
React.component
lubReact.Components
źródło
Przyczyną tego może być pakiet innej firmy. W naszym przypadku było to olśniewające . Mamy podobne ustawienia jak w @steine ( patrz ta odpowiedź powyżej ).
Aby znaleźć problematyczny pakiet, uruchomiłem wersję webpack lokalnie w trybie produkcyjnym, dzięki czemu mogłem znaleźć problematyczny pakiet w śladzie stosu. Więc dla nas to pod warunkiem, że rozwiązanie i udało mi się utrzymać uglification.
źródło
Za pomocą Babel (5.8) pojawia się ten sam błąd, jeśli próbuję użyć wyrażenia
export default
w połączeniu z innymiexport
:źródło
Oto jedna odpowiedź:
źródło
W moim przypadku naprawiłem ten błąd, zmieniając
export default class yourComponent extends React.Component() {}
naexport default class yourComponent extends React.Component {}
. Tak, usuń nawias()
naprawiono błąd.źródło
Wystąpił ten błąd podczas importowania komponentu, takiego jak:
zamiast
źródło
Sprawdź, czy masz błąd w pisowni podczas importowania lub generowania klasy, może to być po prostu to.
źródło
Zmień
import React from 'react-dom
naimport React, {Component} from 'react'
I zmień
class Classname extends React.Component
naclass Classname extends Component
Jeśli używasz najnowszej wersji React (od teraz 16.8.6) .
źródło
Jeśli otrzymujesz ten błąd i używasz Browserify i Browserify-shim (jak w zadaniu Grunt), być może doświadczyłeś głupiego momentu, tak jak ja, w którym mimowolnie
browserify-shim
kazałeś traktować React jako już część globalnej przestrzeni nazw (na przykład załadowane z CDN).Jeśli chcesz, aby Browserify uwzględnił React jako część transformacji, a nie osobny plik, upewnij się, że linia
"react": "global:React"
nie pojawia się w"browserify-shim"
sekcjipackages.json
pliku.źródło
Uncaught Error: Cannot find module 'react'
po usunięciu konfiguracji shimpera? Zasadniczo chcę nadal reagować jako zależność zewnętrzna, ale przeglądanie wydaje się nie rozumieć, jak zbudować pakiet i zachować React zewnętrzny. Może tak być, ale nie musi, ponieważ moduł, który dołączam do mojego punktu wejścia do przeglądania, zareagował jako zależność.Może się to również zdarzyć, jeśli użyłeś
require
zamiastimport
w swoim kodzie.źródło
Zdarzyło mi się również, gdy użyłem tego:
Zamiast właściwego:
Uwaga: - () w pierwszym, który jest główną przyczyną tego problemu
źródło
Dla osób używających
react-native
:może powodować ten błąd.
Podczas gdy
react
bezpośrednie odwoływanie się jest bardziej stabilnym sposobem:źródło
W moim przypadku zmiana React.Element na React.Component naprawia ten błąd.
źródło