在 React 组件上 运行 grunt-browserify 时解析错误
Parse error when running grunt-browserify on a React component
我只是在玩 React,并使用 grunt 和 grunt-browserify 进行了基本设置,但我遇到了解析错误。有人知道这个的解决方案吗?旁注 - 当我不使用 react/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.
这是 grunt 任务:
browserify: {
dist: {
files: {
'public/javascripts/app.js' :
[
'assets/javascripts/components/**/*.js',
'assets/javascripts/app.js'
]
}
}
},
HelloWorld class 是 jsx
因此 grunt-browserify 需要使用转换选项将 jsx 转换为 js。
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
}
}
}
希望对您有所帮助。
我不同意 Dhiraj 的回答,但这让我使用了 reactify。
browserify: {
options: {
transform: ['reactify'],
extensions: ['.jsx'],
debug: true
},
dist: {
files: {
'public/javascripts/app.js' :
[
'assets/javascripts/components/**/*.jsx',
'assets/javascripts/app.jsx'
]
}
}
},
我只是在玩 React,并使用 grunt 和 grunt-browserify 进行了基本设置,但我遇到了解析错误。有人知道这个的解决方案吗?旁注 - 当我不使用 react/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.
这是 grunt 任务:
browserify: {
dist: {
files: {
'public/javascripts/app.js' :
[
'assets/javascripts/components/**/*.js',
'assets/javascripts/app.js'
]
}
}
},
HelloWorld class 是 jsx
因此 grunt-browserify 需要使用转换选项将 jsx 转换为 js。
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
}
}
}
希望对您有所帮助。
我不同意 Dhiraj 的回答,但这让我使用了 reactify。
browserify: {
options: {
transform: ['reactify'],
extensions: ['.jsx'],
debug: true
},
dist: {
files: {
'public/javascripts/app.js' :
[
'assets/javascripts/components/**/*.jsx',
'assets/javascripts/app.jsx'
]
}
}
},