Ошибка разбора при запуске 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'
]
}
}
},