2015-10-01 3 views
0

Я получаю следующее сообщение об ошибке:Неожиданное Токен в React

events.js:72 
     throw er; // Unhandled 'error' event 
      ^
SyntaxError: /vagrant/resources/assets/js/react/react_app.js: Unexpected token (366:10) 
    364 | var InvestorsTable = React.createClass({ 
    365 | 
> 366 |  mixins: [Polling, StateHandler, ComponentBase], 
     |   ^
    367 | 
    368 |  render: function() { 
    369 |   return(
    at Parser.pp.raise (/vagrant/node_modules/gulp-babel/node_modules/babel-core/node_modules/babylon/lib/parser/location.js:24:13) 
    at Parser.pp.unexpected (/vagrant/node_modules/gulp-babel/node_modules/babel-core/node_modules/babylon/lib/parser/util.js:82:8) 
    at Parser.pp.expect (/vagrant/node_modules/gulp-babel/node_modules/babel-core/node_modules/babylon/lib/parser/util.js:76:33) 
    at Parser.pp.jsxParseExpressionContainer (/vagrant/node_modules/gulp-babel/node_modules/babel-core/node_modules/babylon/lib/plugins/jsx/index.js:301:8) 
    at Parser.pp.jsxParseElementAt (/vagrant/node_modules/gulp-babel/node_modules/babel-core/node_modules/babylon/lib/plugins/jsx/index.js:370:30) 
    at Parser.pp.jsxParseElementAt (/vagrant/node_modules/gulp-babel/node_modules/babel-core/node_modules/babylon/lib/plugins/jsx/index.js:362:30) 
    at Parser.pp.jsxParseElement (/vagrant/node_modules/gulp-babel/node_modules/babel-core/node_modules/babylon/lib/plugins/jsx/index.js:398:15) 
    at Parser.parseExprAtom (/vagrant/node_modules/gulp-babel/node_modules/babel-core/node_modules/babylon/lib/plugins/jsx/index.js:410:21) 
    at Parser.pp.parseExprSubscripts (/vagrant/node_modules/gulp-babel/node_modules/babel-core/node_modules/babylon/lib/parser/expression.js:236:19) 
    at Parser.pp.parseMaybeUnary (/vagrant/node_modules/gulp-babel/node_modules/babel-core/node_modules/babylon/lib/parser/expression.js:217:19) 

Эта ошибка вызывается следующим кодом:

var InvestorsTable = React.createClass({ 

    mixins: [Polling, StateHandler, ComponentBase], 

    render: function() { 
     return(
      <Table data={this.state.data} /> 
     ); 
    } 
}); 

Как это недопустимый синтаксис? Где мой «неожиданный токен»? У меня есть еще один класс:

var CapitalRaised = React.createClass({ 

    mixins: [Polling, StateHandler, ComponentBase], 

    ... 

}); 

Этого класс не выбрасывает ошибку, когда его скомпилирован и его скомпилирован ПЕРЕД выше класс. Как и я не вижу, в чем проблема ....

+3

Возможно, проверьте наличие странных невидимых символов Юникода, которые могут скрываться там. Иногда это может происходить в сценариях cut/paste. – Pointy

+1

Если бы я был опасен, у вас есть незакрытый элемент JSX дальше в вашем файле выше этой точки, а '{' on line 364 переключает JSX-парсер из JSX Text в JS-синтаксический анализ, 'mixins:' является анализируется как LabelledStatement. https://github.com/babel/babel/issues/1885#issuecomment-117422784 Я расскажу вам, если вы подтвердите, что я прав. – loganfsmyth

ответ

4

У вас есть незакрытый элемент элемента JSX выше в вашем файле над этим классом. Так как вы не указали свой полный код, вот пример.

var CapitalRaised = React.createClass({ 
    render(){ 
    return (<div>); 
    } 
}); 

var InvestorsTable = React.createClass({ 

    mixins: [Polling, StateHandler, ComponentBase], 

    render: function() { 
    return(
     <Table data={this.state.data} /> 
    ); 
    } 
}); 

Элемент <div> не закрыт. Это вызовет Unexpected token (9:8), потому что JSX имеет форму <div> ... { mixins: [Polling и в JSX содержимое внутри {} должно быть выражением JS, а mixins: не является допустимым началом для выражений.

Смежные вопросы