Saya menggunakan reactjs.
Ketika saya menjalankan kode di bawah ini browser mengatakan:
UnEught TypeError: Ekspresi super harus berupa null atau fungsi, tidak terdefinisi
Setiap petunjuk sama sekali tentang apa yang salah akan dihargai.
Pertama, baris yang digunakan untuk mengkompilasi kode:
browserify -t reactify -t babelify examples/temp.jsx -o examples/public/app.js
Dan kodenya:
var React = require('react');
class HelloMessage extends React.Component {
render() {
return <div>Hello </div>;
}
}
UPDATE: Setelah terbakar dalam api neraka selama tiga hari pada masalah ini saya menemukan bahwa saya tidak menggunakan versi terbaru dari reaksi.
Instal secara global:
sudo npm install -g react@0.13.2
instal secara lokal:
npm install react@0.13.2
pastikan browser juga menggunakan versi yang tepat:
<script type="text/javascript" src="react-0.13.2.js"></script>
Semoga ini bisa menyelamatkan orang lain selama tiga hari dari kehidupan yang berharga.
reactjs
ecmascript-6
Duke Dougal
sumber
sumber
extends React.component
(huruf kecilc
).Components
bukanComponent
:). Komentar Anda membantu BTWJawaban:
Nama Kelas
Pertama, jika Anda yakin bahwa Anda memperluas dari kelas yang dinamai dengan benar, mis. React.Component , bukan React.component atau React.createComponent, Anda mungkin perlu meningkatkan versi React Anda. Lihat jawaban di bawah untuk informasi lebih lanjut tentang kelas yang akan diperluas.
Perbarui React
React hanya mendukung kelas gaya ES6 sejak versi 0.13.0 (lihat posting blog resmi mereka di bagian pengenalan dukungan di sini .
Sebelum itu, ketika menggunakan:
Anda mencoba menggunakan kata kunci ES6 (
extends
) untuk subkelas dari kelas yang tidak didefinisikan menggunakan ES6class
. Ini kemungkinan mengapa Anda mengalami perilaku aneh dengansuper
definisi dll.Jadi, ya, TL; DR - perbarui untuk Bereaksi v0.13.x.
Ketergantungan Melingkar
Ini juga dapat terjadi jika Anda memiliki struktur impor melingkar. Satu modul mengimpor modul lainnya dan sebaliknya. Dalam hal ini Anda hanya perlu memperbaiki kode Anda untuk menghindarinya. Info lebih lanjut
sumber
React.component
bukanReact.Component
extends
. Coba inivar x = function(){}; class y extends x {}
class App extends React.Component () {...}
- yang harus dikoreksi keclass App extends React.Component {...}
(tanpa()
di akhir)Ini berarti bahwa Anda ingin subkelas sesuatu, yang seharusnya
Class
, tetapi memang demikianundefined
. Alasannya mungkin:Class extends ...
, jadi Anda perluas variabel yang tidak ditentukanimport ... from
, jadi Anda mengimporundefined
dari modulundefined
)export ...
pernyataan modul referensi , sehingga mengekspor variabel yang tidak terdefinisiexport
pernyataan pernyataan hilang sama sekali, sehingga hanya mengeksporundefined
sumber
import {Foo} from 'bar'
alih-alihimport Foo from 'bar'
. Karena itu dipilih.class Thing extends React.Component() {
- Saya harus menghapus()
Ini juga dapat disebabkan oleh kesalahan ketik, jadi alih-alih dengan huruf
Component
kapital C, Andacomponent
menggunakan huruf c yang lebih rendah, misalnya:Catatan: Sumber kesalahan ini mungkin karena ada
React
dan kami pikir secara otomatis apa yang akan terjadi selanjutnya harus berupa metode reaksi atau properti yang dimulai dengan huruf kecil, tetapi sebenarnya itu adalah Kelas lain (Component
) yang harus dimulai dengan huruf kapital .sumber
Dalam kasus saya, dengan reaksi asli, kesalahannya adalah yang saya miliki
dari pada
sumber
Saya mengalami ini ketika kehilangan pernyataan ekspor untuk kelas JSX.
Sebagai contoh:
sumber
Anda juga dapat menerima ini jika Anda mencoba untuk mengeksekusi
React.Component
dengan kesalahan()
dalam definisi kelas Anda.Yang kadang-kadang saya berhasil lakukan ketika saya mengkonversi dari komponen fungsional stateless ke kelas.
sumber
Saya telah melihat kesalahan ini ketika Anda memiliki ketergantungan melingkar.
sumber
Untuk orang lain, yang mungkin mengembangkan masalah ini. Anda juga dapat memeriksa bahwa
component
metode dalamReact.Component
huruf kapital. Saya memiliki masalah yang sama dan apa yang menyebabkannya saya menulis:Saya mengubahnya menjadi
dan semuanya bekerja dengan baik
sumber
Saya mendapatkan ini ketika saya salah ketik pada impor saya:
sumber
Periksa Kelas yang Anda perluas benar-benar ada, beberapa metode Bereaksi didepresiasi, Mungkin juga ada kesalahan ketik
'React.Components'
alih-alih'React.Component'
Semoga berhasil!!
sumber
React.component
alih-alihReact.Component
(perhatikan ibukota "C" saya tidak ada)Saya akan berkontribusi solusi lain yang mungkin, yang bekerja untuk saya. Saya menggunakan indeks kenyamanan untuk mengumpulkan semua komponen menjadi satu file.
Saya tidak percaya pada saat penulisan ini secara resmi didukung oleh babel, dan melempar naskah ke dalam putaran - namun saya telah melihatnya digunakan dalam banyak proyek dan pasti nyaman.
Namun, ketika digunakan dalam kombinasi dengan pewarisan tampaknya melemparkan kesalahan yang disajikan dalam pertanyaan di atas.
Solusi sederhana adalah, untuk modul yang bertindak sebagai orang tua perlu diimpor langsung, bukan melalui file indeks kenyamanan.
./src/components/index.js
./src/components/com-1/Com1.js
./src/components/com-3/Com3.js
./src/components/com-3/Com3.js
sumber
Ini bekerja untuk saya:
sumber
Webpack 4 Bongkahan dan Hash dengan Uglification oleh TerserPlugin
Ini dapat terjadi ketika Webpack menggunakan potongan dan hash dengan minifikasi dan unglifikasi melalui TerserPlugin (saat ini pada versi 1.2.3). Dalam kasus saya kesalahan dipersempit ke uglifikasi oleh Plugin Terser dari
vendors.[contenthash].js
bundel saya yang memegangnode_modules
. Semuanya berfungsi saat tidak menggunakan hash.Solusi adalah dengan mengecualikan bundel dalam opsi uglification:
Info lebih lanjut
sumber
Saya memiliki masalah yang sama, hanya berubah dari
Navigator
menjadi{Navigator}
sumber
export Foo ... import { Foo }
- atau -export default Foo ... import Foo
Tidak benar untuk jawaban ini tetapi untuk orang lain dengan kesalahan yang sama kesalahan saya yang konyol bisa berpotensi membantu.
Bodoh, masalah saya menggunakan notasi fungsi dengan memasukkan () mengikuti nama kelas .
Pastikan sintaks Anda benar. Dan Anda telah mengimpor & mengekspor komponen / modul eksternal dengan nama dan jalur yang benar.
Template ini akan berfungsi dengan baik jika Anda memiliki versi reaksi yang agak baru diinstal:
sumber
Kondisi saya
Solusi untuk masalah saya
Turunkan Froala ke v3.0.
Sesuatu di v3.1 merusak proses pembuatan Buat Aplikasi Bereaksi kami.
Pembaruan: Gunakan skrip reaksi v3.3
Kami menemukan bahwa ada masalah antara Bereaksi Naskah 3.2 dan Froala 3.1.
Memperbarui ke React Scripts v3.3 memungkinkan kami untuk meningkatkan ke Froala 3.1.
sumber
Saya sudah menulis
bukannya
React.Component
Itu masalah saya)) dan sedang mencari ini lebih dari setengah jam.sumber
Dalam kasus saya, saya menggunakan:
yang salah tetapi yang benar adalah:
juga pastikan ada
√
React.Component
TIDAK
ˣ
React.component
atauReact.Components
sumber
Mungkin ada paket pihak ketiga yang menyebabkan ini. Dalam kasus kami itu menyilaukan bereaksi . Kami memiliki pengaturan yang mirip dengan @steine ( lihat jawaban ini di atas ).
Untuk menemukan paket yang bermasalah saya menjalankan webpack build secara lokal dengan mode produksi dan dengan demikian dapat menemukan paket yang bermasalah dalam jejak tumpukan. Jadi bagi kami ini memberikan solusinya dan saya dapat menjaga uglifikasi.
sumber
Menggunakan Babel (5.8) Saya mendapatkan kesalahan yang sama jika saya mencoba menggunakan ekspresi
export default
dalam kombinasi dengan yang lainexport
:sumber
Inilah satu jawaban:
sumber
Dalam kasus saya, saya memperbaiki kesalahan ini dengan mengubah
export default class yourComponent extends React.Component() {}
keexport default class yourComponent extends React.Component {}
. Ya, menghapus tanda kurung()
memperbaiki kesalahan.sumber
Saya mengalami kesalahan ini ketika mengimpor komponen seperti:
dari pada
sumber
Lihat apakah Anda memiliki kesalahan ketik dalam impor atau pembuatan kelas Anda, bisa jadi itu saja.
sumber
Ubah
import React from 'react-dom
keimport React, {Component} from 'react'
Dan ubah
class Classname extends React.Component
keclass Classname extends Component
Jika Anda menggunakan React versi terbaru (16.8.6 seperti yang sekarang) .
sumber
Jika Anda menerima kesalahan ini dan menggunakan Browserify dan browserify-shim (seperti dalam tugas Grunt), Anda mungkin mengalami momen bodoh seperti yang saya lakukan di mana Anda tidak sengaja memberi tahu
browserify-shim
untuk memperlakukan Bereaksi sebagai sudah menjadi bagian dari namespace global (misalnya, diambil dari CDN).Jika Anda ingin Browserify menyertakan Bereaksi sebagai bagian dari transformasi, dan bukan file terpisah, pastikan baris
"react": "global:React"
tersebut tidak muncul di"browserify-shim"
bagian dalampackages.json
file Anda .sumber
Uncaught Error: Cannot find module 'react'
setelah menghapus konfigurasi browserify-shim? Pada dasarnya saya ingin tetap bereaksi sebagai ketergantungan eksternal tetapi browserify tampaknya tidak mengerti bagaimana membangun bundel dan tetap Bereaksi eksternal. Ini mungkin atau mungkin bukan karena modul yang saya sertakan di titik masuk browserify saya telah bereaksi sebagai ketergantungan.Ini juga dapat terjadi jika Anda telah menggunakan
require
alih-alihimport
dalam kode Anda.sumber
Terjadi pada saya juga ketika saya menggunakan ini:
Alih-alih yang benar:
Perhatikan: - () pada yang pertama yang merupakan penyebab utama masalah ini
sumber
Bagi yang menggunakan
react-native
:dapat menghasilkan kesalahan ini.
Sedangkan merujuk
react
langsung adalah cara yang lebih stabil:sumber
Dalam kasus saya itu adalah React.Element berubah menjadi React.Component yang membuat perbaikan untuk kesalahan ini.
sumber