2015-04-18 15 views
26

Sto provando a scrivere il componente del router per la mia app di reazione. Sto creando una nuova classe di reazione e definisco alcuni percorsi nel metodo componentDidMount. Questo è il metodo integraleToken imprevisto <errore nel componente del router reattivo

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} /> 
     }); 
    }); 

}, 

Quando sono andato a '/' o '/ realtà' tutte le opere. Ma quando vado al 'realty/new' ho un errore Uncaught SyntaxError: Unexpected token < in app.js: 1. Ma il debugger di Chrome mostra questo errore nel mio index.html e non riesco nemmeno a eseguire il debug di questo nel browser. Questo errore si verifica ogni volta, quando vado al percorso con '/'. Sto cercando di usare altri router lato client, come page.js, rlite, grapnel, ma sono tutti uguali. Forse qualcuno ha qualche idea di questo errore?

UPD: Questo è il codice fuul del componente router. Ora si usa page.js fo di routing e vedo lo stesso errore

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

io non sono sicuro perché si sta accoppiando codice Nodo lato server con lato client reagire codice ... –

+0

Sto usando la libreria grappino per lato client routing. Router dell'oggetto creato da var router = new Grapnel(). sto provando ad usare altre librerie, ma il risultato è sempre lo stesso. –

+0

Oh ok, mio ​​male allora, pensavo che fosse il router espresso in quel codice. Potresti provare a collegare il tuo codice sorgente completo? Sembra che l'errore si verifichi alla riga 1. Potrebbe essere che manchi JSXTransformer negli script HTML. –

risposta

106

Il "token imprevisto" errore può presentarsi per una serie di ragioni diverse. Mi sono imbattuto in un problema simile, e nel mio caso il problema era che il tag script per caricare il fascio generato nel formato HTML è stato in questo modo:

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

Durante la navigazione per un percorso con un parametro (stessa cosa accadrà a una rotta nidificata o a una rotta con più di un segmento), il browser tenta di caricare lo script utilizzando l'URL errato. Nel mio caso il percorso del percorso era "utente /: id" e il browser ha inoltrato una richiesta a "http://127.0.0.1:3000/utente /scripts/app.js" anziché "http://127.0.0.1:3000/scripts/app.js". La soluzione è stata facile, cambiare il tag script per questo:

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

Grazie mille l'errore è stato davvero frustrante – manas

+2

Questa soluzione non è ovvia! Grazie. – otajor

+1

Non l'avrei mai trovato se non fosse stato per te. Grazie Fastas. – Erika

Problemi correlati