为什么在基本应用程序中将“ es-2015”添加到Babel预设中会导致“未定义导出”?

时间:2019-01-26 00:43:51

标签: javascript ecmascript-6 gulp babel

我正在设置与Babel一起运行Gulp的样板。我已经创建了2个简单文件(app.jsCaller.js)来测试环境。

Caller.js:

export default class Caller {
    constructor() {
        //
    }

    SayHello() {
        alert("Hello!!");
    }
}

App.js:

import Caller from './Caller.js';

let x = new Caller();
x.SayHello();
App.js中引用了

index.html,以及:

<script src="/js/Caller.js"></script>
<script src="/js/app.js"></script>

我的Gulp任务看起来像这样:

gulp.task('js', () => {
    pump([
        gulp.src(src.js),
        plumber(err => console.error(err)),
        babel({ presets: ['es2015', 'es2017'] }),
        gulp.dest(dest.js),
        browserSync.stream()
    ]);
});

注意:我试图尽可能地支持旧版浏览器,所以我想包括ES2015。

我发现,当我包含es2015而不是仅包含es2017时,会出现以下错误:

  

ReferenceError:导出未定义

     

ReferenceError:未定义require

我的理解是可以将此代码转换为与ES2015兼容的代码,但是,如果我从Gulp的Babel预设中删除ES2015,则效果很好。

为什么?

0 个答案:

没有答案