Ich erhalte diesen Fehler:
Nicht erfasster Fehler: Invariante Verletzung: Elementtyp ist ungültig: Erwartet eine Zeichenfolge (für integrierte Komponenten) oder eine Klasse / Funktion (für zusammengesetzte Komponenten), hat jedoch: Objekt.
Das ist mein Code:
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)
Meine Home.jsx
Datei:
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
quelle
quelle
Antworten:
In meinem Fall ( mit Webpack ) war es der Unterschied zwischen:
vs.
Der zweite funktioniert, während der erste den Fehler verursacht. Oder das Gegenteil.
quelle
<TabBarIOS.item>
zu<TabBarIOS.Item>
Sie benötigen Standard exportieren oder benötigen (Pfad) .default
quelle
export default
Anweisungen zu transformieren ,exports.default
sodass Sie sie.default
beim Importieren des Moduls verwenden müssen. Eine Möglichkeit, dies zu beseitigen, besteht darin, Babel-Plugin-Add-Module-Exporte zu verwenden , die das Standardverhalten wiederherstellen.Haben Sie gerade eine Ihrer React-Komponenten modularisiert? Wenn ja, wird dieser Fehler angezeigt , wenn Sie vergessen haben, module.exports anzugeben , zum Beispiel:
nicht modularisierte zuvor gültige Komponente / Code:
modularisierte Komponente / Code mit module.exports :
quelle
module.exports = YourReactComponent
export default class YourReactComponent extends React.Component {
module.exports
immer noch der FehlerWenn Sie diesen Fehler erhalten, liegt dies möglicherweise daran, dass Sie den Link mit importieren
import { Link } from 'react-router'
Stattdessen ist es möglicherweise besser zu verwenden
Ich glaube, dies ist eine Voraussetzung für den React Router Version 4
quelle
react
stattdessen Link vonreact-router-dom
. Das Problem wurde behoben. Ich habe diese Fehlermeldung noch nie gesehen.https://github.com/rackt/react-router/blob/e7c6f3d848e55dda11595447928e843d39bed0eb/examples/query-params/app.js#L4
Router
ist auch eine der Eigenschaften vonreact-router
. Ändern Sie also, dass Ihre Module folgenden Code erfordern:Wenn Sie die ES6-Syntax für den Link use (
import
) verwenden möchten , verwenden Sie babel als Helfer.BTW, um Ihren Code Werk zu machen, können wir hinzufügen ,
{this.props.children}
in derApp
, wiequelle
Lassen Sie sich nicht von der Liste der Antworten auf eine einzelne Frage überraschen. Es gibt verschiedene Ursachen für dieses Problem.
Für meinen Fall war die Warnung
Gefolgt von dem Fehler
Ich konnte den Fehler nicht verstehen, da er keine Methode oder keinen Dateinamen erwähnt. Ich konnte erst nach dem Betrachten dieser oben erwähnten Warnung eine Lösung finden.
Ich habe die folgende Zeile bei index.js.
Als ich mit dem Schlüsselwort "ConnectedRouter" nach dem obigen Fehler gegoogelt habe, habe ich die Lösung auf einer GitHub-Seite gefunden.
Der Fehler liegt darin, dass wir bei der Installation des
react-router-redux
Pakets dieses standardmäßig installieren. https://github.com/reactjs/react-router-redux, aber nicht die eigentliche Bibliothek.Um diesen Fehler zu beheben, installieren Sie das richtige Paket, indem Sie den npm-Bereich mit angeben
@
Sie müssen das falsch installierte Paket nicht entfernen. Es wird automatisch überschrieben.
Vielen Dank.
PS: Auch Warnung hilft dir. Vernachlässigen Sie nicht die Warnung , wenn Sie nur den Fehler betrachten .
quelle
In meinem Fall hat eines der exportierten untergeordneten Module keine ordnungsgemäße Reaktionskomponente zurückgegeben.
anstatt
Der angezeigte Fehler betraf den Elternteil und konnte daher nicht herausgefunden werden.
quelle
In meinem Fall wurde dies durch falsche Kommentarsymbole verursacht. Das ist falsch:
Das ist richtig:
Beachten Sie die geschweiften Klammern
quelle
Ich habe den gleichen Fehler: ERROR FIX !!!!
Ich benutze 'React-Router-Redux' v4, aber sie ist schlecht. Nach npm installiere React-Router-Redux @ Als nächstes bin ich auf "React-Router-Redux": "^ 5.0.0-alpha.9",
UND ES ARBEITET
quelle
Ich habe dies erreicht, indem ich
import App from './app/';
erwartet habe, dass es importiert wird./app/index.js
, aber es wurde stattdessen importiert./app.json
.quelle
Ich hatte das gleiche Problem und stellte fest, dass ich eine Undefined React-Komponente im JSX-Markup bereitstellte . Die Sache ist, dass die zu rendernde Reaktionskomponente dynamisch berechnet wurde und undefiniert wurde!
Der Fehler lautete:
Das Beispiel, das diesen Fehler erzeugt:
Das Problem war, dass ein ungültiger "uiType" bereitgestellt wurde und daher als Ergebnis undefiniert wurde:
quelle
const MyComponent = () => <div>my component</div>;
festzustellen, ob die Importe dann normal funktionieren.Nur als schnelle Ergänzung dazu. Ich hatte das gleiche Problem und während Webpack meine Tests kompilierte und die Anwendung einwandfrei lief. Beim Importieren meiner Komponente in die Testdatei habe ich bei einem der Importe den falschen Fall verwendet, und dies hat denselben Fehler verursacht.
Gewesen sein sollte
Beachten Sie, dass der Importname
myComponent
vom Namen des Exports in derMyComponent
Datei abhängt .quelle
Hatte ein ähnliches Problem mit den neuesten React Native-Versionen 0.50 und höher.
Für mich war es ein Unterschied zwischen:
und
(Letzteres hat das Problem behoben). Ich habe Stunden gebraucht, um diese seltsame, schwer zu bemerkende Nuance zu fangen :(
quelle
Eine andere mögliche Lösung, die für mich funktioniert hat:
Derzeit
react-router-redux
ist in der Beta und npm gibt 4.x zurück, aber nicht 5.x. Aber die@types/react-router-redux
zurückgegebenen 5.x. Es wurden also undefinierte Variablen verwendet.Das Erzwingen der Verwendung von 5.x durch NPM / Garn hat es für mich gelöst.
quelle
Angesichts Ihres Fehlers von:
'Uncaught Error: Invariant Violation: Element type is invalid: expected a string (for built-in components) or a class/function but got: object'
Sie haben 2 Möglichkeiten:
Ihre Exportdatei kann das Wort
default
wie in haben.export default class ____....
Dann muss Ihr Import die Verwendung vermeiden{}
. Wie inimport ____ from ____
Vermeiden Sie die Verwendung des Standardworts. Dann sieht Ihr Export so aus.
export class ____...
Dann muss Ihr Import das verwenden{}
. Mögenimport {____} from ____
quelle
export default {component name}
und vergessen, es hinzuzufügenIn meinem Fall erfolgte der Import implizit aufgrund einer Bibliothek.
Ich habe es geschafft, es durch Ändern zu beheben
export class Foo
zu
export default class Foo
.quelle
Ich bin auf diesen Fehler gestoßen, als ich eine .jsx- und eine .scss-Datei im selben Verzeichnis mit demselben Stammnamen hatte.
So zum Beispiel, wenn Sie haben
Component.jsx
undComponent.scss
die gleichen Ordner und Sie versuchen , dies zu tun:import Component from ./Component
Webpack ist anscheinend verwirrt und versucht zumindest in meinem Fall, die scss-Datei zu importieren, wenn ich die .jsx-Datei wirklich möchte.
Ich konnte das Problem beheben, indem ich die .scss-Datei umbenannte und die Mehrdeutigkeit vermeidete. Ich hätte auch Component.jsx explizit importieren können
quelle
Und in meinem Fall fehlte mir nur ein Semikolon bei der Import-Dekleration in einem meiner Submodule.
Es wurde behoben, indem Folgendes geändert wurde:
dazu:
quelle
In meinem Fall habe ich den Standardexport verwendet, aber kein
function
oder exportiertReact.Component
, sondern nur einJSX
Element, dhError:
Werke:
quelle
Zusätzlich zu
import
/export
genannten Problemen. Ich habe festgestellt, dassReact.cloneElement()
das Hinzufügenprops
zu einem untergeordneten Element und das anschließende Rendern denselben Fehler verursacht hat.Ich musste mich ändern:
zu:
Weitere Informationen finden Sie in den
React.cloneElement()
Dokumenten .quelle
Ich habe diesen Fehler beim Reaktionsrouting erhalten. Das Problem war, dass ich ihn verwendet habe
<Route path="/" component={<Home/>} exact />
Aber es war eine falsche Route, die eine Komponente als Klasse / Funktion erfordert, also habe ich sie geändert
<Route path="/" component={Home} exact />
und es hat funktioniert. (Vermeiden Sie einfach die Klammern um das Bauteil)
quelle
Für mich war es so, dass meine gestalteten Komponenten nach meiner Definition der funktionalen Komponenten definiert wurden. Es geschah nur in der Inszenierung und nicht lokal für mich. Sobald ich meine gestalteten Komponenten über meine Komponentendefinition verschoben habe, ist der Fehler behoben.
quelle
Dies bedeutet, dass einige Ihrer importierten Komponenten falsch deklariert oder nicht vorhanden sind
Ich hatte ein ähnliches Problem
Aber als ich in die freigegebene Datei schaute, hatte ich keine 'Image'-Komponente, sondern eine' ItemImage'-Komponente
Dies passiert, wenn Sie Code aus anderen Projekten kopieren;)
quelle
Ich hatte ein Problem mit
React.Fragment
, weil die Version meiner Reaktion war< 16.2
, also habe ich es losgeworden.quelle
@ Balasubramani M hat mich hier gerettet. Wollte noch einen hinzufügen, um Menschen zu helfen. Dies ist das Problem, wenn Sie zu viele Dinge zusammenkleben und mit Versionen unbekümmert sind. Ich habe eine Version von material-ui aktualisiert und muss sie ändern
dazu:
quelle
Ich hatte das gleiche Problem und das Problem war, dass einige JS-Dateien nicht in der Bündelung dieser bestimmten Seite enthalten waren. Versuchen Sie, diese Datei einzuschließen, und das Problem wurde möglicherweise behoben. Ich war das:
und es hat das Problem für mich behoben.
Dies war, während ich React in Dot NEt MVC verwendete
quelle
Ich habe einen anderen Grund für diesen Fehler entdeckt. Dies hat damit zu tun, dass CSS-in-JS einen Nullwert an das JSX der obersten Ebene der Rückgabefunktion in einer React-Komponente zurückgibt.
Zum Beispiel:
Ich würde diese Warnung bekommen:
Gefolgt von diesem Fehler:
Ich habe festgestellt, dass es kein CSS mit der CSS-in-JS-Komponente gibt, die ich rendern wollte. Ich habe das Problem behoben, indem ich sichergestellt habe, dass CSS zurückgegeben wird und kein Nullwert.
Zum Beispiel:
quelle
Ich erhalte fast den gleichen Fehler:
Ich habe versucht, eine reine Funktionskomponente aus einer anderen Knotenbibliothek zu importieren, die mein Team entwickelt hat. Um dies zu beheben, musste ich von zu einem absoluten Import (unter Bezugnahme auf den Pfad zur Komponente im Inneren
node_modules
) von wechselnzu
quelle
In meinem Fall war es die äußere Komponente, die wie folgt importiert wurde:
import React, { Component } from 'react';
und dann erklärt wie:
export default class MyOuterComponent extends Component {
Wo eine innere Komponente das React Bare importierte:
import React from 'react';
und zur Erklärung darin gepunktet:
export default class MyInnerComponent extends ReactComponent {
quelle
In meinem Fall habe ich einige Zeit gebraucht, um mögliche Wege zu suchen und zu überprüfen, aber nur auf diese Weise behoben: Entfernen Sie "{", "}" beim Importieren einer benutzerdefinierten Komponente:
Mein falscher Weg war:
Weil ich in der Datei orderDetail.js OrderDetail als Standardklasse exportiert habe:
quelle