2015-06-16 2 views
18

, wenn ich zum ersten Mal verwenden-Router reagieren, aber Seite gibt mir diesen Fehler unterReact-Router: type.toUpperCase ist keine Funktion

React-Router: type.toUpperCase ist keine Funktion

var React = require('react'); 
var Router = require('react-router'); 

var Route = Router.Route; 

var App = React.createClass({ 

    render: function() { 
    return (
     <div>App</div> 
    ); 
    } 
}); 

React.render((
    <Router> 
    <Route path="/" component={App} /> 
    </Router> 
), document.getElementById('app')); 

es scheint nichts falsch aus dem Dokument, könnte jemand mir helfen?

wo Fehler hier

function autoGenerateWrapperClass(type) { 
    return ReactClass.createClass({ 
     tagName: type.toUpperCase(), 
     render: function() { 
     return new ReactElement(
      type, 
      null, 
      null, 
      null, 
      null, 
      this.props 
     ); 
     } 
    }); 
    } 
+0

Bitte einen Stack-Trace für den Fehler hinzufügen. –

Antwort

3

Änderung der erfordern Aussagen kommt: aus einer variablen

var React = require('react'); 
var ReactRouter = require('react-router'); 
var Router = ReactRouter.Router; 
var Route = ReactRouter.Route; 
+1

immer noch Fehler..und auf diese Weise kommt zwei Warnung wie Warnung: React.createElement: Typ sollte nicht null oder undefiniert sein. Es sollte eine Zeichenfolge (für DOM-Elemente) oder eine ReactClass (für zusammengesetzte Komponenten) sein. bundle.js: 1730 Warnung: Nur Funktionen oder Zeichenfolgen können als React-Komponenten bereitgestellt werden. – Fakefish

+0

Die 'require' Anweisungen sollten nicht die Warnungen verursachen. Übrigens: Dein oben angegebener Code scheint nicht korrekt zu sein, könntest du bitte eine Geige erstellen ?! Oder poste deinen ganzen Code? – marcel

32

Der Fehler Sie auf dem Laufenden ist kryptisch, aber was es bedeutet, ist, dass Sie versuchen, zu machen, eine Komponente, die ist keine echte Komponente. Zum Beispiel könnten Sie dies tun und die gleiche Art von Fehlern:

render: function() { 
    var Thing = {}; // not a component 
    return <Thing />; // same error 
} 

Im Code, den Sie geschrieben, <Router> Karten auf eine Variable, ein Modul ist, nicht eine Komponente. Sie können es mit einer neuen Variablendeklaration beheben:

var React = require('react'); 

var routerModule = require('react-router'); 
var Router = routerModule.Router; // component 

var Route = routerModule.Route; 

var App = React.createClass({ 

    render: function() { 
    return (
     <div>App</div> 
    ); 
    } 
}); 

React.render((
    <Router> 
    <Route path="/" component={App} /> 
    </Router> 
), document.getElementById('app')); 
+2

Ich sah diesen Fehler, weil ich die Komponente nicht exportiert hatte und ich versuchte, sie zu verwenden. Einfach gefunden, sobald ich weiß, was der Fehler bedeutet, danke. – CallMeNorm

17

Ich bekam den gleichen Fehler. Dann stelle ich fest, dass ich beim Export meiner Komponenten Fehler gemacht habe. In einer Komponente habe ich module.export statt module.exports geschrieben. Also, bitte überprüfe, ob du den gleichen Fehler gemacht hast.

0

, wenn Sie verwenden reagieren-Router v0.13.3 ersetzen Strecke r auf der Route, wie folgt aus:

var routes = (
    <Route> 
    <Route path="/" component={App} /> 
    </Route> 
); 

Router.run(routes, function(Root) { 
React.render(<Root />, document.getElementById('app')); 
}); 
+1

Könnten Sie bitte Ihre Antwort näher erläutern, indem Sie ein wenig mehr Beschreibung der von Ihnen bereitgestellten Lösung hinzufügen? – abarisone

+0

Nein, ich kann nicht, weil ich kein Englisch spreche, siehe [Dokumentation] (https://github.com/rackt/react-router/blob/0.13.x/doc/00%20Guides/Router% 20Übersicht.md) – ololo