J'utilise reactjs.
Lorsque j'exécute le code ci-dessous, le navigateur dit:
TypeError non capturé: la super expression doit être nulle ou une fonction, non indéfinie
Tout indice sur ce qui ne va pas serait apprécié.
D'abord la ligne utilisée pour compiler le code:
browserify -t reactify -t babelify examples/temp.jsx -o examples/public/app.js
Et le code:
var React = require('react');
class HelloMessage extends React.Component {
render() {
return <div>Hello </div>;
}
}
MISE À JOUR: Après avoir brûlé dans hellfire pendant trois jours sur ce problème, j'ai constaté que je n'utilisais pas la dernière version de react.
Installez globalement:
sudo npm install -g react@0.13.2
installer localement:
npm install react@0.13.2
assurez-vous que le navigateur utilise également la bonne version:
<script type="text/javascript" src="react-0.13.2.js"></script>
J'espère que cela sauve quelqu'un d'autre de trois jours d'une vie précieuse.
reactjs
ecmascript-6
Duke Dougal
la source
la source
extends React.component
(en minusculesc
).Components
au lieu deComponent
:). Votre commentaire a aidé BTWRéponses:
Noms de classe
Premièrement, si vous êtes certain que vous étendez à partir de la classe correctement nommée, par exemple React.Component , pas React.component ou React.createComponent, vous devrez peut-être mettre à niveau votre version de React. Voir les réponses ci-dessous pour plus d'informations sur les classes à partir desquelles.
Upgrade React
React ne prend en charge que les classes de style ES6 depuis la version 0.13.0 (voir leur blog officiel sur l'introduction du support ici .
Avant cela, lors de l'utilisation:
vous tentiez d'utiliser des mots clés ES6 (
extends
) pour sous-classer à partir d'une classe qui n'était pas définie à l'aide d'ES6class
. C'est probablement pourquoi vous avez eu un comportement étrange avec lessuper
définitions, etc.Donc, oui, TL; DR - mise à jour vers React v0.13.x.
Dépendances circulaires
Cela peut également se produire si vous avez une structure d'importation circulaire. Un module en importe un autre et inversement. Dans ce cas, il vous suffit de refactoriser votre code pour l'éviter. Plus d'informations
la source
React.component
au lieu deReact.Component
extends
. Essayez cecivar x = function(){}; class y extends x {}
class App extends React.Component () {...}
- qui devrait être corrigéeclass App extends React.Component {...}
(sans le()
à la fin)Cela signifie que vous voulez quelque chose de sous-classe, qui devrait être
Class
, mais estundefined
. Les raisons peuvent être:Class extends ...
, donc vous étendant la variable non définieimport ... from
, donc vous importezundefined
du moduleundefined
)export ...
déclaration du module référencé , il exporte donc une variable non définieexport
du tout référencé , donc il exporte justeundefined
la source
import {Foo} from 'bar'
au lieu deimport Foo from 'bar'
. Ont donc voté.class Thing extends React.Component() {
- J'ai dû retirer le()
Cela peut également être causé par une erreur de frappe, donc au lieu de
Component
C majuscule, vous avezcomponent
avec c inférieur, par exemple:Remarque: La source de cette erreur est peut-être parce qu'il y a
React
et nous pensons automatiquement que ce qui vient ensuite devrait être une méthode ou une propriété de réaction commençant par une lettre minuscule, mais en fait c'est une autre classe (Component
) qui devrait commencer par une lettre majuscule .la source
Dans mon cas, avec react-native, l'erreur était que j'avais
au lieu de
la source
J'ai vécu cela en manquant une instruction d'exportation pour la classe JSX.
Par exemple:
la source
Vous pouvez également le recevoir si vous essayez de l'exécuter
React.Component
avec une erreur()
dans votre définition de classe.Ce que j'arrive parfois à faire lorsque je convertis un composant fonctionnel sans état en classe.
la source
J'ai vu cette erreur lorsque vous avez une dépendance circulaire.
la source
Pour toute autre personne, qui peut développer ce problème. Vous pouvez également vérifier que la
component
méthode enReact.Component
est en majuscule. J'ai eu le même problème et ce qui l'a causé, c'est que j'ai écrit:Je l'ai changé en
et tout a bien fonctionné
la source
J'ai obtenu ceci quand j'ai eu une faute de frappe sur mon importation:
la source
Vérifiez que les classes que vous étendez existent réellement, peu de méthodes React sont dépréciées, il peut également s'agir d'une erreur de frappe
'React.Components'
au lieu de'React.Component'
Bonne chance!!
la source
React.component
place deReact.Component
(remarquez le "C" majuscule qui me manquait)Je vais apporter une autre solution possible, une qui a fonctionné pour moi. J'utilisais l'index de commodité pour collecter tous les composants dans un seul fichier.
Je ne crois pas au moment de la rédaction de ce document, il est officiellement pris en charge par babel, et jette une frappe typographique - mais je l'ai vu utilisé dans de nombreux projets et est certainement pratique.
Cependant, lorsqu'il est utilisé en combinaison avec l'héritage, il semble jeter l'erreur présentée dans la question ci-dessus.
Une solution simple est, pour les modules qui agissent comme des parents doivent être importés directement plutôt que via un fichier d'index de commodité.
./src/components/index.js
./src/components/com-1/Com1.js
./src/components/com-3/Com3.js
./src/components/com-3/Com3.js
la source
Cela a fonctionné pour moi:
la source
Webpack 4 morceaux et hachages avec uglification par TerserPlugin
Cela peut se produire lorsque Webpack utilise des morceaux et des hachages avec minification et déglification via TerserPlugin (actuellement sur la version 1.2.3). Dans mon cas, l'erreur a été réduite à l'uglification par le plugin Terser de mon
vendors.[contenthash].js
bundle qui contient monnode_modules
. Tout fonctionnait sans utiliser de hachage.La solution consistait à exclure le bundle dans les options d'uglification:
Plus d'informations
la source
J'ai le même problème, il suffit de passer de
Navigator
à{Navigator}
la source
export Foo ... import { Foo }
- ou -export default Foo ... import Foo
Pas correct pour cette réponse, mais pour d'autres avec la même erreur, mon erreur ridiculement stupide pourrait potentiellement aider.
Bêtement, mon problème était d' utiliser la notation de fonction en incluant () après le nom de la classe .
Assurez-vous que votre syntaxe est correcte. Et vous avez importé et exporté tous les composants / modules externes avec les noms et chemins corrects.
Ce modèle devrait fonctionner correctement si une nouvelle version de react est installée:
la source
Mes conditions
Solution à mon problème
Rétrograder Froala vers la v3.0.
Quelque chose dans la v3.1 a cassé notre processus de construction de l'application Create React.
Mise à jour: utilisez les scripts React v3.3
Nous avons découvert qu'il y avait un problème entre React Scripts 3.2 et Froala 3.1.
La mise à jour de React Scripts v3.3 nous a permis de passer à Froala 3.1.
la source
J'ai écrit
au lieu de
React.Component
C'était mon problème)) et cherchait cela plus d'une demi-heure.la source
Dans mon cas, j'utilisais:
ce qui était faux mais correct est:
assurez-vous également qu'il n'y a
√
React.Component
PAS
ˣ
React.component
ouReact.Components
la source
Un package tiers peut être à l'origine de ce problème. Dans notre cas, c'était une réaction éblouissante . Nous avons des paramètres similaires à ceux de @steine ( voir cette réponse ci-dessus ).
Afin de trouver le paquet problématique, j'ai exécuté la construction du webpack localement avec le mode de production et j'ai donc pu trouver le paquet problématique dans la trace de la pile. Donc, pour nous, cela a fourni la solution et j'ai pu garder l'ugification.
la source
En utilisant Babel (5.8), j'obtiens la même erreur si j'essaie d'utiliser l'expression
export default
en combinaison avec une autreexport
:la source
Voici une réponse:
la source
Dans mon cas, j'ai corrigé cette erreur en
export default class yourComponent extends React.Component() {}
passant àexport default class yourComponent extends React.Component {}
. Oui, supprimer les parenthèses a()
corrigé l'erreur.la source
J'ai rencontré cette erreur lors de l'importation d'un composant comme:
au lieu de
la source
Regardez si vous avez une erreur de frappe dans votre importation ou votre génération de classe, ce pourrait être simplement cela.
la source
Passez
import React from 'react-dom
àimport React, {Component} from 'react'
Et changez
class Classname extends React.Component
àclass Classname extends Component
Si vous utilisez la dernière version de React (16.8.6 à partir de maintenant) .
la source
Si vous recevez cette erreur et utilisez Browserify et browserify-shim (comme dans une tâche Grunt), vous avez peut-être vécu un moment stupide comme je l'ai fait où vous avez involontairement dit
browserify-shim
de traiter React comme faisant déjà partie de l'espace de noms global (par exemple, chargé à partir d'un CDN).Si vous souhaitez que Browserify inclue React dans le cadre de la transformation, et non un fichier séparé, assurez-vous que la ligne
"react": "global:React"
n'apparaît pas dans la"browserify-shim"
section de votrepackages.json
fichier.la source
Uncaught Error: Cannot find module 'react'
après avoir supprimé la configuration de browserify-shim? Fondamentalement, je veux continuer à réagir en tant que dépendance externe, mais browserify ne semble pas comprendre comment créer le bundle et garder React externe. Cela peut ou non être dû au fait que le module que j'inclus dans mon point d'entrée browserify a réagi comme une dépendance.Cela peut également se produire si vous l'avez utilisé à la
require
place deimport
votre code.la source
Cela m'est arrivé aussi quand j'ai utilisé ceci:
Au lieu du bon:
Remarque: - () dans le premier qui est la principale cause de ce problème
la source
Pour ceux qui utilisent
react-native
:peut produire cette erreur.
Alors que référencer
react
directement est la manière la plus stable de procéder:la source
Dans mon cas, c'est le changement de React.Element en React.Component qui corrige cette erreur.
la source