我正在尝试将React与ES6引入到我的应用程序中,该应用程序使用Gulp构建。我可以让React单独工作,而ES6独自工作。但试图import
崩溃我的Gulp构建。咕嘟咕嘟的错误是:非法进口声明吞噬反应
第14行:非法进口报关
我的HTML页面包括反应,并内置JS文件:
<script src="https://cdnjs.cloudflare.com/ajax/libs/react/0.12.2/react.min.js"></script>
<script src="js/app.js"></script>
app.js
看起来是这样的:
import {Child} from './child.js';
var Parent = React.createClass({
render: function(){
const y = 3; //es6 works
return (
<div>
<div> This is the parent {y}. </div>
<Child name="child"/>
</div>
)
}
});
React.render(<Parent />, document.getElementById('container'));
child.js
在同一个目录中,看起来像th是:
var Child = React.createClass({
render: function(){
return (
<div>
and this is the <b>{this.props.name}</b>.
</div>
)
}
});
export default Child;
我咕嘟咕嘟文件,编译器ES6与巴贝尔的部分:
gulp.task('babel', function(){
gulp.src('js/app.js')
.pipe(react())
.pipe(babel({
presets: ['es2015']
}))
.pipe(gulp.dest('dist/js'));
});
我缺少/做错了是阻止我使用import
?
谢谢安德鲁。我认为这很有效,但是在做完这个之后,我又遇到了一个错误。 在浏览器中,我得到了一个来自require'Module name xxx还没有加载上下文'的控制台错误。所以我放弃了Babel,并使用Webpack来编译React代码,现在看起来不错。 –
@AlanP。哦,是的。 Babel实际上并不是一个模块加载器,它只是一个转译器,因此会发生错误。使用Webpack还可以转换Web的模块,并且还有很长的路要走。 – Li357