Ошибка разбора при запуске grunt-browserify на компоненте React

Я просто играю с React и у меня есть базовые настройки, использующие grunt и grunt-browserify, но я получаю ошибку разбора. Кто-нибудь знает решение для этого? Примечание: задача работает нормально, когда я не использую реагировать /jsx.

С основным компонентом:

var HelloWorld = React.createClass({
  render: function(){
    return (
      <div>
        Hello World!
      </div>
    )
  }
});

React.render(<HelloWorld />, document.getElementById('app'));

Я получаю эту ошибку:

>> File "assets/javascripts/app.js" changed.
Running "browserify:dist" (browserify) task
>> /Users/username/www/reactor/assets/javascripts/app.js:4
>>       <div>
>>       ^
>> ParseError: Unexpected token
Warning: Error running grunt-browserify. Use --force to continue.

И вот главная задача:

  browserify: {
      dist: {
        files: {
          'public/javascripts/app.js' : 
          [
            'assets/javascripts/components/**/*.js',
            'assets/javascripts/app.js'
          ]
        }
      }
    },

2 ответа

Решение

Класс HelloWorld jsx поэтому grunt-browserify необходимо преобразовать jsx в js с помощью параметра transform.

browserify: {
  dist: {
    options: {
      transform: [ require('grunt-react').browserify ] // <-- this one
    },
    client: {
      src: [assets/javascripts/components/**/*.js, assets/javascripts/app.js], // sources files
      dest: 'public/javascripts/app.js' // output file
    }
  }
}

Вот ссылка

Надеюсь это поможет.

Я не согласился с ответом Дираджа, но это привело меня к использованию реактивата.

browserify: {
  options: {
    transform: ['reactify'],
    extensions: ['.jsx'],
    debug: true
  },
  dist: {
    files: {
      'public/javascripts/app.js' : 
      [
        'assets/javascripts/components/**/*.jsx',
        'assets/javascripts/app.jsx'
      ]
    }
  }
},
Другие вопросы по тегам