Eu estou usando reactjs.
Quando executo o código abaixo, o navegador diz:
TypeError não capturado: a super expressão deve ser nula ou uma função, não indefinida
Qualquer sugestão sobre o que está errado seria apreciada.
Primeiro, a linha usada para compilar o código:
browserify -t reactify -t babelify examples/temp.jsx -o examples/public/app.js
E o código:
var React = require('react');
class HelloMessage extends React.Component {
render() {
return <div>Hello </div>;
}
}
ATUALIZAÇÃO: Depois de queimar no fogo do inferno por três dias com esse problema, descobri que não estava usando a versão mais recente do react.
Instale globalmente:
sudo npm install -g react@0.13.2
instalar localmente:
npm install react@0.13.2
verifique se o navegador também está usando a versão correta:
<script type="text/javascript" src="react-0.13.2.js"></script>
Espero que isso salve outra pessoa em três dias de vida preciosa.
reactjs
ecmascript-6
Duke Dougal
fonte
fonte
extends React.component
(minúsculasc
).Components
vez deComponent
:). Seu comentário ajudou a BTWRespostas:
Nomes de classe
Primeiro, se você tiver certeza de que está estendendo da classe nomeada corretamente, por exemplo , React.Component , não React.component ou React.createComponent, pode ser necessário atualizar sua versão do React. Veja as respostas abaixo para obter mais informações sobre as classes a serem estendidas.
Atualização Reagir
O React suporta apenas classes no estilo ES6 desde a versão 0.13.0 (veja a postagem oficial do blog na introdução ao suporte aqui .
Antes disso, ao usar:
você estava tentando usar as palavras-chave do ES6 (
extends
) para subclasse de uma classe que não foi definida usando o ES6class
. Provavelmente era por isso que você estava tendo um comportamento estranho comsuper
definições, etc.Então, sim, TL; DR - atualize para React v0.13.x.
Dependências circulares
Isso também pode ocorrer se você tiver uma estrutura de importação circular. Um módulo importando outro e o contrário. Nesse caso, você só precisa refatorar seu código para evitá-lo. Mais informações
fonte
React.component
em vez deReact.Component
extends
. Tente isso #var x = function(){}; class y extends x {}
class App extends React.Component () {...}
- que deve ser corrigido paraclass App extends React.Component {...}
(sem o()
no final)Isso significa que você deseja subclassar algo que deveria ser
Class
, mas éundefined
. Os motivos podem ser:Class extends ...
, para que você estenda a variável indefinidaimport ... from
, então você importaundefined
do móduloundefined
)export ...
instrução do módulo referenciado , para que exporte a variável indefinidaexport
instrução do módulo referenciado , de modo que exporta apenasundefined
fonte
import {Foo} from 'bar'
vez deimport Foo from 'bar'
. Votado por isso.class Thing extends React.Component() {
Também não faça isso: - Eu tive que remover o()
Também pode ser causado por um erro de digitação; portanto, em vez de
Component
com C maiúsculo, você temcomponent
com c mais baixo, por exemplo:Nota: A origem desse erro pode ser que exista
React
e acreditamos automaticamente que o que vem a seguir deve ser um método ou propriedade de reação que comece com uma letra minúscula, mas, na verdade, é outra Class (Component
) que deve começar com uma letra maiúscula .fonte
No meu caso, com react-native, o erro foi que eu tinha
ao invés de
fonte
Eu experimentei isso ao perder uma instrução de exportação para a classe JSX.
Por exemplo:
fonte
Você também pode receber isso se estiver tentando executar
React.Component
com um erro()
na sua definição de classe.O que às vezes consigo fazer quando estou convertendo de um componente funcional sem estado para uma classe.
fonte
Eu vi esse erro quando você tem uma dependência circular.
fonte
Para outras pessoas que possam desenvolver esse problema. Você também pode verificar se o
component
método inReact.Component
está em maiúsculas. Eu tive o mesmo problema e o que causou foi que eu escrevi:Eu mudei para
e tudo funcionou bem
fonte
Eu recebi isso quando tive um erro de digitação na minha importação:
fonte
Verifique se as classes que você estende realmente existem, poucos métodos React estão depreciados. Também pode ser um erro de digitação em
'React.Components'
vez de'React.Component'
Boa sorte!!
fonte
React.component
, em vez deReact.Component
(aviso a capital "C" Eu estava faltando)Vou contribuir com outra solução possível, que funcionou para mim. Eu estava usando o índice de conveniência para coletar todos os componentes em um arquivo.
Não acredito que, no momento em que escrevo, isso seja oficialmente suportado por babel e gire o texto datilografado - no entanto, já o vi usado em muitos projetos e é definitivamente conveniente.
No entanto, quando usado em combinação com herança, parece gerar o erro apresentado na pergunta acima.
Uma solução simples é que os módulos que atuam como pais precisam ser importados diretamente, e não através de um arquivo de índice de conveniência.
./src/components/index.js
./src/components/com-1/Com1.js
./src/components/com-3/Com3.js
./src/components/com-3/Com3.js
fonte
Isso funcionou para mim:
fonte
Webpack 4 Pedaços e Hashes com Uglificação por TerserPlugin
Isso pode ocorrer quando o Webpack usa blocos e hashes com minificação e desglificação via TerserPlugin (atualmente na versão 1.2.3). No meu caso, o erro foi reduzido à uglificação pelo Terser Plugin do meu
vendors.[contenthash].js
pacote que contém minhasnode_modules
. Tudo funcionou quando não estava usando hashes.A solução foi excluir o pacote nas opções de uglificação:
Mais informações
fonte
Eu tenho o mesmo problema, basta mudar de
Navigator
para{Navigator}
fonte
export Foo ... import { Foo }
- ou -export default Foo ... import Foo
Não está correto para esta resposta, mas para outras pessoas com o mesmo erro, meu erro ridiculamente bobo poderia ajudar.
Estupidamente, meu problema foi usar a notação de função incluindo () após o nome da classe .
Verifique se sua sintaxe está correta. E você importou e exportou quaisquer componentes / módulos externos com os nomes e caminhos corretos.
Este modelo deve funcionar bem se você tiver uma versão nova do react instalada:
fonte
Minhas condições
Solução para o meu problema
Faça o downgrade do Froala para a v3.0.
Algo na v3.1 interrompeu nosso processo de criação do Create React App.
Atualização: use scripts de reação v3.3
Descobrimos que havia um problema entre o React Scripts 3.2 e o Froala 3.1.
A atualização para o React Scripts v3.3 nos permitiu atualizar para o Froala 3.1.
fonte
Eu escrevi
em vez de
React.Component
Esse era o meu problema)) e procurava isso por mais de meia hora.fonte
No meu caso, eu estava usando:
o que estava errado, mas correto é:
verifique também se há
√
React.Component
NÃO
ˣ
React.component
ouReact.Components
fonte
Pode haver um pacote de terceiros causando isso. No nosso caso, foi deslumbrante . Temos configurações semelhantes às do @steine ( veja esta resposta acima ).
Para encontrar o pacote problemático, executei o build do webpack localmente com o modo de produção e, assim, consegui encontrar o pacote problemático no rastreamento da pilha. Então, para nós, isso forneceu a solução e eu pude manter a uglificação.
fonte
Usando Babel (5.8), recebo o mesmo erro se tentar usar a expressão
export default
em combinação com outrasexport
:fonte
Aqui está uma resposta:
fonte
No meu caso, corrigi esse erro alterando
export default class yourComponent extends React.Component() {}
paraexport default class yourComponent extends React.Component {}
. Sim excluir os parênteses()
corrigiu o erro.fonte
Eu experimentei esse erro ao importar componente como:
ao invés de
fonte
Veja se você tem um erro de digitação na importação ou na geração de classes, pode ser simplesmente isso.
fonte
Mude
import React from 'react-dom
paraimport React, {Component} from 'react'
E mude
class Classname extends React.Component
paraclass Classname extends Component
Se você estiver usando a versão mais recente do React (16.8.6 a partir de agora) .
fonte
Se você está recebendo esse erro e está usando o Browserify e o browserify-shim (como em uma tarefa do Grunt), pode ter passado por um momento tolo como eu, onde você disse sem querer
browserify-shim
para tratar o React como já parte do espaço de nomes global (por exemplo, carregado de uma CDN).Se você deseja que o Browserify inclua o React como parte da transformação, e não um arquivo separado, verifique se a linha
"react": "global:React"
não aparece na"browserify-shim"
seção do seupackages.json
arquivo.fonte
Uncaught Error: Cannot find module 'react'
após remover a configuração do browserify-shim? Basicamente, eu quero continuar reagindo como uma dependência externa, mas o browserify parece não entender como criar o pacote e manter o React externo. Isso pode ou não ser porque o módulo que estou incluindo no ponto de entrada do browserify reagiu como uma dependência.Isso também pode acontecer se você tiver usado em
require
vez deimport
dentro do seu código.fonte
Também aconteceu comigo quando usei isso:
Em vez da correta:
Aviso: - () no primeiro, que é a principal causa deste problema
fonte
Para aqueles que usam
react-native
:pode produzir esse erro.
Enquanto a referência
react
direta é o caminho mais estável a seguir:fonte
No meu caso, foi a alteração React.Element para React.Component que corrige esse erro.
fonte