首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >非法进口报关与吞咽反应

非法进口报关与吞咽反应
EN

Stack Overflow用户
提问于 2017-06-18 20:46:36
回答 1查看 2.2K关注 0票数 3

我试图在我的应用程序中引入使用ES6的反作用,该应用程序是用Gulp构建的。我可以让React单独工作,而ES6单独工作。但是试图import破坏了我的Gulp构建。Gulp的错误是:

第14行:非法进口申报

我的HTML页面包括React和构建的JS文件:

代码语言:javascript
复制
    <script src="https://cdnjs.cloudflare.com/ajax/libs/react/0.12.2/react.min.js"></script>
    <script src="js/app.js"></script>

app.js看起来是这样的:

代码语言:javascript
复制
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位于同一个目录中,如下所示:

代码语言:javascript
复制
var Child = React.createClass({
  render: function(){
    return (
      <div>
        and this is the <b>{this.props.name}</b>.
      </div>
    )
  }
});

export default Child;

我的Gulp文件中用Babel编译ES6的部分:

代码语言:javascript
复制
gulp.task('babel', function(){
  gulp.src('js/app.js')
    .pipe(react())
    .pipe(babel({
      presets: ['es2015']
    }))
    .pipe(gulp.dest('dist/js'));
});

我错过了什么/做错了什么阻止我使用import

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-06-18 21:00:21

您必须将es6module选项应用于gulp-react,以便允许导入模块:

代码语言:javascript
复制
.pipe(react({
  es6module: true
}))

然后,修复导入语句。由于Child是以默认方式导出的,所以按如下方式导入:

代码语言:javascript
复制
import Child from './child.js';

注意:gulp-react是反对gulp-babel的,所以如果您已经将它用于es2015,我建议使用它。相反,使用gulp-babel,并为Babel安装react预置:

代码语言:javascript
复制
npm install --save-dev babel-preset-react

最后,将其应用于gulp-babel

代码语言:javascript
复制
presets: ['es2015', 'react']
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/44619385

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档