Saya mendapatkan kesalahan ini:
Uncaught Error: Pelanggaran Invarian: Tipe elemen tidak valid: diharapkan sebuah string (untuk komponen bawaan) atau kelas / fungsi (untuk komponen komposit) tetapi didapat: objek.
Ini kode saya:
var React = require('react')
var ReactDOM = require('react-dom')
var Router = require('react-router')
var Route = Router.Route
var Link = Router.Link
var App = React.createClass({
render() {
return (
<div>
<h1>App</h1>
<ul>
<li><Link to="/about">About</Link></li>
</ul>
</div>
)
}
})
var About = require('./components/Home')
ReactDOM.render((
<Router>
<Route path="/" component={App}>
<Route path="about" component={About} />
</Route>
</Router>
), document.body)
Home.jsx
File saya :
var React = require('react');
var RaisedButton = require('material-ui/lib/raised-button');
var Home = React.createClass({
render:function() {
return (
<RaisedButton label="Default" />
);
},
});
module.exports = Home;
reactjs
react-router
Pankaj Thakur
sumber
sumber
Jawaban:
Dalam kasus saya ( menggunakan Webpack ) perbedaan antara:
vs.
Yang kedua bekerja sementara yang pertama menyebabkan kesalahan. Atau sebaliknya.
sumber
<TabBarIOS.item>
menjadi<TabBarIOS.Item>
Anda perlu ekspor default atau memerlukan (path). default
sumber
export default
pernyataanexports.default
sehingga Anda harus menggunakan.default
ketika Anda mengimpor modul. Salah satu cara untuk menghilangkannya adalah dengan menggunakan babel-plugin-add-module-ekspor yang mengembalikan perilaku default.Apakah Anda baru saja memodulasi komponen React Anda? Jika ya, Anda akan mendapatkan kesalahan ini jika Anda lupa menentukan module.exports , misalnya:
komponen / kode yang sebelumnya tidak termodulasi yang valid:
komponen / kode termodulasi dengan module.exports :
sumber
module.exports = YourReactComponent
export default class YourReactComponent extends React.Component {
module.exports
masih mendapatkan kesalahanJika Anda mendapatkan kesalahan ini, itu mungkin karena Anda mengimpor tautan menggunakan
import { Link } from 'react-router'
alih-alih, mungkin lebih baik digunakan
Saya percaya ini adalah persyaratan untuk router versi bereaksi
sumber
react
, alih-alihreact-router-dom
. Memperbaiki masalah. Belum pernah melihat pesan salah ini sebelumnya.https://github.com/rackt/react-router/blob/e7c6f3d848e55dda11595447928e843d39bed0eb/examples/query-params/app.js#L4
Router
juga merupakan salah satu properti darireact-router
. Jadi, ubah modul Anda memerlukan kode seperti itu:Jika Anda ingin menggunakan sintaks ES6 yang menggunakan tautan (
import
), gunakan babel sebagai pembantu.BTW, untuk membuat karya kode Anda, kita dapat menambahkan
{this.props.children}
dalamApp
, sepertisumber
Jangan kaget dengan daftar jawaban untuk satu pertanyaan. Ada berbagai penyebab masalah ini;
Untuk kasus saya, peringatan itu
Diikuti oleh kesalahan
Saya tidak dapat memahami kesalahan karena tidak menyebutkan metode atau nama file apa pun. Saya bisa menyelesaikan hanya setelah melihat peringatan ini, yang disebutkan di atas.
Saya memiliki baris berikut di index.js.
Ketika saya mencari kesalahan di atas dengan kata kunci "ConnectedRouter", saya menemukan solusinya di halaman GitHub.
Kesalahannya adalah karena, ketika kita menginstal
react-router-redux
paket, secara default kita menginstal yang ini. https://github.com/reactjs/react-router-redux tetapi bukan perpustakaan sebenarnya.Untuk mengatasi kesalahan ini, instal paket yang sesuai dengan menentukan lingkup npm dengan
@
Anda tidak perlu menghapus paket yang salah pasang. Ini akan ditimpa secara otomatis.
Terima kasih.
PS: Bahkan peringatan membantu kamu. Jangan abaikan peringatan hanya dengan melihat kesalahannya saja.
sumber
Dalam kasus saya, salah satu modul anak yang diekspor tidak mengembalikan komponen reaksi yang tepat.
dari pada
Kesalahan yang ditampilkan adalah untuk orang tua, karenanya tidak bisa mengetahuinya.
sumber
Dalam kasus saya, itu disebabkan oleh simbol komentar yang salah. Ini salah:
Ini benar:
Perhatikan kurung keriting
sumber
Saya memiliki kesalahan yang sama: ERROR FIX !!!!
Saya menggunakan 'react-router-redux' v4 tapi dia buruk .. Setelah npm instal react-router-redux @ next saya berada di "react-router-redux": "^ 5.0.0-alpha.9",
DAN BEKERJA
sumber
Saya mendapatkan ini dengan melakukan
import App from './app/';
mengharapkannya untuk mengimpor./app/index.js
, tetapi malah diimpor./app.json
.sumber
Saya mengalami masalah yang sama dan menyadari bahwa saya menyediakan komponen Undefined React di markup JSX. Masalahnya adalah komponen reaksi untuk membuat dihitung secara dinamis dan akhirnya menjadi tidak terdefinisi!
Kesalahan tersebut menyatakan:
Contoh yang menghasilkan kesalahan ini:
Masalahnya adalah disediakan "uiType" yang tidak valid dan karena itu ini menghasilkan tidak terdefinisi sebagai hasilnya:
sumber
const MyComponent = () => <div>my component</div>;
hanya untuk melihat apakah impor berfungsi normal.Sama seperti tambahan cepat untuk ini. Saya mengalami masalah yang sama dan ketika Webpack sedang mengkompilasi tes saya dan aplikasi berjalan dengan baik. Ketika saya mengimpor komponen saya ke file tes saya menggunakan kasus yang salah pada salah satu impor dan itu menyebabkan kesalahan yang sama.
Seharusnya begitu
Perhatikan bahwa nama impor
myComponent
tergantung pada nama ekspor di dalamMyComponent
file.sumber
Punya masalah serupa dengan React Native versi terbaru 0.50 dan lebih tinggi.
Bagi saya itu adalah perbedaan antara:
dan
(yang terakhir memperbaiki masalah). Butuh waktu berjam-jam untuk menangkap nuansa aneh, sulit untuk diperhatikan ini :(
sumber
Solusi lain yang mungkin, yang bekerja untuk saya:
Saat ini,
react-router-redux
dalam versi beta dan npm mengembalikan 4.x, tetapi tidak 5.x. Tapi@types/react-router-redux
5.x. dikembalikan Jadi ada variabel tidak pasti yang digunakan.Memaksa NPM / Yarn untuk menggunakan 5.x menyelesaikannya untuk saya.
sumber
Mengingat kesalahan Anda tentang:
'Uncaught Error: Invariant Violation: Element type is invalid: expected a string (for built-in components) or a class/function but got: object'
Anda memiliki 2 opsi:
File ekspor Anda dapat memiliki kata
default
seperti padaexport default class ____....
Kemudian impor Anda harus menghindari penggunaan{}
di sekitarnya. Seperti dalamimport ____ from ____
Hindari menggunakan kata standar. Maka ekspor Anda terlihat seperti
export class ____...
Lalu impor Anda harus menggunakan{}
. Sukaimport {____} from ____
sumber
export default {component name}
dan lupa menambahkannyaDalam kasus saya, impor terjadi secara implisit karena perpustakaan.
Saya berhasil memperbaikinya dengan mengubah
export class Foo
untuk
export default class Foo
.sumber
Saya mengalami kesalahan ini ketika saya memiliki file .jsx dan .scss di direktori yang sama dengan nama root yang sama.
Jadi, misalnya, jika Anda memiliki
Component.jsx
danComponent.scss
di folder yang sama dan Anda mencoba melakukan ini:import Component from ./Component
Webpack tampaknya menjadi bingung dan, setidaknya dalam kasus saya, mencoba mengimpor file scss ketika saya benar-benar menginginkan file .jsx.
Saya dapat memperbaikinya dengan mengganti nama file .scss dan menghindari ambiguitas. Saya bisa juga mengimpor Component.jsx secara eksplisit
sumber
Dan dalam kasus saya, saya baru saja kehilangan titik koma pada deklarasi impor di salah satu sub modul saya.
Memperbaikinya dengan mengubah ini:
untuk ini:
sumber
Dalam kasus saya, saya menggunakan ekspor default, tetapi tidak mengekspor
function
atauReact.Component
, tetapi hanyaJSX
elemen, yaituKesalahan:
Bekerja:
sumber
Selain
import
/export
masalah yang disebutkan. Saya menemukan menggunakanReact.cloneElement()
untuk menambahprops
elemen anak dan kemudian memberikannya memberi saya kesalahan yang sama ini.Saya harus berubah:
untuk:
Lihat
React.cloneElement()
dokumen untuk info lebih lanjut.sumber
Saya mendapat kesalahan ini dalam mereaksikan perutean, masalahnya adalah saya menggunakan
<Route path="/" component={<Home/>} exact />
tapi rute yang salah memerlukan komponen sebagai kelas / fungsi jadi saya mengubahnya menjadi
<Route path="/" component={Home} exact />
dan itu berhasil. (Hanya menghindari kawat gigi di sekitar komponen)
sumber
Bagi saya itu adalah bahwa komponen gaya saya didefinisikan setelah definisi komponen fungsional saya. Itu hanya terjadi dalam pementasan dan bukan secara lokal untuk saya. Setelah saya memindahkan komponen gaya saya di atas definisi komponen saya kesalahan itu hilang.
sumber
Ini berarti beberapa Komponen Anda yang diimpor dinyatakan salah atau tidak ada
Saya punya masalah serupa, saya punya
tetapi ketika saya melihat ke file Shared saya tidak memiliki komponen 'Gambar' melainkan Komponen 'ItemImage'
Ini terjadi ketika Anda menyalin kode dari proyek lain;)
sumber
Saya memiliki masalah dengan
React.Fragment
, karena versi reaksi saya adalah< 16.2
, jadi saya menyingkirkannya.sumber
@Balasubramani M menyelamatkan saya di sini. Ingin menambahkan satu lagi untuk membantu orang. Ini adalah masalah ketika Anda menempelkan terlalu banyak hal bersama dan menjadi angkuh dengan versi. Saya memperbarui versi material-ui dan perlu berubah
untuk ini:
sumber
Saya memiliki masalah yang sama dan masalahnya adalah beberapa file js tidak dimasukkan dalam bundling halaman tertentu. Coba sertakan file itu dan masalahnya mungkin sudah diperbaiki. Saya melakukan ini:
dan itu memperbaiki masalah bagi saya.
Ini sementara saya menggunakan Bereaksi di Dot NEt MVC
sumber
Saya telah menemukan alasan lain untuk kesalahan ini. Ini ada hubungannya dengan CSS-in-JS mengembalikan nilai nol ke JSX tingkat atas dari fungsi pengembalian dalam komponen Bereaksi.
Sebagai contoh:
Saya akan mendapatkan peringatan ini:
Diikuti oleh kesalahan ini:
Saya menemukan itu karena tidak ada CSS dengan komponen CSS-in-JS yang saya coba render. Saya memperbaikinya dengan memastikan ada CSS yang dikembalikan dan bukan nilai nol.
Sebagai contoh:
sumber
Saya mendapatkan kesalahan yang hampir sama:
Saya mencoba mengimpor komponen fungsional murni dari pustaka simpul lain yang dikembangkan tim saya. Untuk memperbaikinya, saya harus mengubah ke impor absolut (merujuk path ke komponen di dalamnya
node_modules
) dariuntuk
sumber
Dalam kasus saya itu akhirnya menjadi komponen luar yang diimpor seperti ini:
import React, { Component } from 'react';
dan kemudian menyatakan seperti:
export default class MyOuterComponent extends Component {
di mana komponen dalam mengimpor Bereaksi telanjang:
import React from 'react';
dan bertitik ke dalamnya untuk deklarasi:
export default class MyInnerComponent extends ReactComponent {
sumber
Dalam kasus saya, saya butuh banyak waktu untuk mencari dan memeriksa beberapa cara tetapi hanya diperbaiki dengan cara ini: hapus "{", "}" saat mengimpor komponen khusus:
Cara saya yang salah adalah:
Karena dalam file orderDetail.js, saya mengekspor OrderDetail sebagai kelas default:
sumber