2015-04-18 7 views
26

Ich versuche, Router-Komponente für meine Reaktion App schreiben. Ich erstelle eine neue Reaktionsklasse und definiere einige Routen in der Methode componentDidMount. Dies ist voll MethodeUnerwartete Token <Fehler in der Reaktion Router-Komponente

componentDidMount: function() { 

    var me = this; 

    router.get('/', function(req){ 
     me.setState({ 
      component: <MainPage /> 
     }); 
    }); 

    router.get('/realty', function(req){ 
     me.setState({ 
      component: <RealtyPage /> 
     }); 
    }); 

    router.get('/realty/:id', function(req){ 
     me.setState({ 
      component: <RealtyPage id={req.params.id} /> 
     }); 
    }); 

}, 

Wenn ich gehe zu ‚/‘ oder ‚/ Objekt‘ alles funktioniert. Aber, wenn ich zu 'realty/new' gehe, habe ich Fehler Uncaught SyntaxError: Unerwartetes Token < in app.js: 1. Aber der Chrome-Debugger zeigt diesen Fehler in meiner index.html an, und ich kann das im Browser nicht debuggen. Dieser Fehler tritt jedes Mal auf, wenn ich mit '/' auf die Route gehe. Ich versuche, andere clientseitige Router zu verwenden, wie page.js, rlite, grapnel, aber alle immer noch gleich. Vielleicht hat jemand eine Ahnung von diesem Fehler?

UPD: Dies ist faul Code der Router-Komponente. Jetzt page.js fo Routing verwenden und ich sehe die gleichen Fehler

var React = require('react'); 
var page = require('page'); 


var MainPage = require('../components/MainPage'); 
var RealtyPage = require('../components/RealtyPage'); 


var Router = React.createClass({ 

    getInitialState: function(){ 
     return { 
      component: <RealtyPage /> 
     } 
    }, 

    componentDidMount: function() { 

     var me = this; 

     page('/', function (ctx) { 
      me.setState({ 
       component: <MainPage /> 
      }); 
     }); 

     page('/realty', function (ctx) { 
      me.setState({ 
       component: <RealtyPage /> 
      }); 
     }); 

     page.start(); 

    }, 

    render: function(){ 
     return this.state.component 
    } 
}); 

module.exports = Router; 
+0

Ich bin mir nicht sicher, warum Sie serverseitige Knoten Code mit Client-Seite sind Kopplung Code Reagieren ... –

+0

Ich verwende grapnel Bibliothek für Client-Seite Routing. Object-Router erstellt von var router = new Grapnel(). Ich versuche, andere Bibliotheken zu verwenden, aber immer noch das gleiche Ergebnis. –

+0

Oh ok, mein Schlechter dann, ich dachte, es war Express-Router in diesem Code. Könnten Sie versuchen, Ihren vollständigen Quellcode zu verlinken? Der Fehler scheint in Zeile 1 zu passieren. Es kann sein, dass Sie JSXTransformer in Ihren HTML-Skripten nicht finden. –

Antwort

106

Der „unerwartetes Token“ Fehler für eine Reihe von unterschiedlichen Gründen auftauchen kann. Ich lief in ein ähnliches Problem, und in meinem Fall das Problem war, dass der Skript-Tag das erzeugte Bündel in dem HTML-Code zu laden, war etwa so:

<script src="scripts/app.js"></script> 

Wenn mit einem Parameter (gleiche Sache zu einer Route navigiert wird passieren auf eine verschachtelte Route oder eine Route mit mehr als einem Segment), würde der Browser versuchen, das Skript mit der falschen URL zu laden. In meinem Fall war der Routenpfad 'user /: id' und der Browser hat eine Anfrage an 'http://127.0.0.1:3000/Benutzer /scripts/app.js' anstelle von 'http://127.0.0.1:3000/scripts/app.js' gestellt. Die Lösung war einfach, den Script-Tag dies ändern:

<script src="/scripts/app.js"></script> 
+9

Vielen Dank der Fehler war wirklich frustrierend – manas

+2

Diese Lösung ist nicht offensichtlich! Vielen Dank. – otajor

+1

Würde nie gefunden, wenn es nicht für Sie wäre. Danke Fastas. – Erika