Bable 转换失败
Bable transform fails
我正在尝试使用 babel 转换,但出现错误
命令
babel --plugins transform-react-remove-prop-types app/assets/javascripts/components
错误
SyntaxError: app/assets/javascripts/components/admin_partner_views/actual_report.jsx: Unexpected token (46:6)
44 |
45 | return (
> 46 | <div className="btn-group btn-group-justified">
| ^
47 | <div className="btn-group">
48 | <button className={leadsButtonClass} onClick={this.activateReport.bind(this, 'leads')}>
49 | Leads Report
反应组件
"use strict";
var AdminPartnerReportView = React.createClass({
getInitialState: function() {
var activeReport;
if (!this.props.leadSource.leads_view || !this.props.leadSource.calls_view) {
activeReport = this.props.leadSource.leads_view ? 'leads' : this.props.leadSource.calls_view ? 'calls' : null;
} else if (this.props.leadSource.leads_view && this.props.leadSource.calls_view) {
activeReport = null;
}
return {activeReport: activeReport};
},
activateReport: function(reportName) {
this.setState({activeReport: reportName});
},
reportChooser: function() {
if (!this.props.leadSource.leads_view || !this.props.leadSource.calls_view) {
return null;
}
var cx = React.addons.classSet,
leadsButtonClass,
callsButtonClass;
leadsButtonClass = cx({
'btn': true,
'btn-primary': this.state.activeReport == 'leads',
'btn-default': !this.state.activeReport != 'leads'
});
callsButtonClass = cx({
'btn': true,
'btn-primary': this.state.activeReport == 'calls',
'btn-default': this.state.activeReport != 'calls'
});
return (
<div className="btn-group btn-group-justified">
<div className="btn-group">
<button className={leadsButtonClass} onClick={this.activateReport.bind(this, 'leads')}>
Leads Report
</button>
</div>
<div className="btn-group">
<button className={callsButtonClass} onClick={this.activateReport.bind(this, 'calls')}>
Calls Report
</button>
</div>
</div>
)
},
reportToRender: function() {
if (this.state.activeReport == 'leads') {
return <LeadSourceLeads leadSourceId={this.props.leadSource.id}/>
} else if (this.state.activeReport == 'calls') {
return <LeadSourceCalls leadSourceId={this.props.leadSource.id}/>
} else {
return null
}
},
render: function() {
return (
<div className="col-xs-12">
{this.reportChooser()}
{this.reportToRender()}
</div>
)
}
});
您的问题是 babel 可能没有正确配置以理解 jsx。它需要 babel-preset-react
。你的 .babelrc
文件(因为你是直接从命令行 运行 babel)应该看起来像:
{
"presets": ["@babel/preset-react"],
"env": {
"development": {
"presets": [["@babel/preset-react", { "development": true }]]
}
}
}
如果您没有 .babelrc
文件,请在项目根目录中创建一个。你需要做 npm install --save-dev @babel/preset-react
。 Link: https://babeljs.io/docs/en/babel-preset-react
我正在尝试使用 babel 转换,但出现错误
命令
babel --plugins transform-react-remove-prop-types app/assets/javascripts/components
错误
SyntaxError: app/assets/javascripts/components/admin_partner_views/actual_report.jsx: Unexpected token (46:6)
44 |
45 | return (
> 46 | <div className="btn-group btn-group-justified">
| ^
47 | <div className="btn-group">
48 | <button className={leadsButtonClass} onClick={this.activateReport.bind(this, 'leads')}>
49 | Leads Report
反应组件
"use strict";
var AdminPartnerReportView = React.createClass({
getInitialState: function() {
var activeReport;
if (!this.props.leadSource.leads_view || !this.props.leadSource.calls_view) {
activeReport = this.props.leadSource.leads_view ? 'leads' : this.props.leadSource.calls_view ? 'calls' : null;
} else if (this.props.leadSource.leads_view && this.props.leadSource.calls_view) {
activeReport = null;
}
return {activeReport: activeReport};
},
activateReport: function(reportName) {
this.setState({activeReport: reportName});
},
reportChooser: function() {
if (!this.props.leadSource.leads_view || !this.props.leadSource.calls_view) {
return null;
}
var cx = React.addons.classSet,
leadsButtonClass,
callsButtonClass;
leadsButtonClass = cx({
'btn': true,
'btn-primary': this.state.activeReport == 'leads',
'btn-default': !this.state.activeReport != 'leads'
});
callsButtonClass = cx({
'btn': true,
'btn-primary': this.state.activeReport == 'calls',
'btn-default': this.state.activeReport != 'calls'
});
return (
<div className="btn-group btn-group-justified">
<div className="btn-group">
<button className={leadsButtonClass} onClick={this.activateReport.bind(this, 'leads')}>
Leads Report
</button>
</div>
<div className="btn-group">
<button className={callsButtonClass} onClick={this.activateReport.bind(this, 'calls')}>
Calls Report
</button>
</div>
</div>
)
},
reportToRender: function() {
if (this.state.activeReport == 'leads') {
return <LeadSourceLeads leadSourceId={this.props.leadSource.id}/>
} else if (this.state.activeReport == 'calls') {
return <LeadSourceCalls leadSourceId={this.props.leadSource.id}/>
} else {
return null
}
},
render: function() {
return (
<div className="col-xs-12">
{this.reportChooser()}
{this.reportToRender()}
</div>
)
}
});
您的问题是 babel 可能没有正确配置以理解 jsx。它需要 babel-preset-react
。你的 .babelrc
文件(因为你是直接从命令行 运行 babel)应该看起来像:
{
"presets": ["@babel/preset-react"],
"env": {
"development": {
"presets": [["@babel/preset-react", { "development": true }]]
}
}
}
如果您没有 .babelrc
文件,请在项目根目录中创建一个。你需要做 npm install --save-dev @babel/preset-react
。 Link: https://babeljs.io/docs/en/babel-preset-react