从Babel 5迁移到6时出错(ReferenceError:未定义导出)

时间:2015-12-12 13:35:44

标签: javascript babeljs

我正在使用Gulp和Babel将客户端es6代码编译为es5。升级后我得到了这个错误(在浏览器中): Uncaught ReferenceError: exports is not defined

出现此错误的原因是,Babel将我的客户端脚本编译为CommonJS模块,并在每个文件的开头添加这些行:

Object.defineProperty(exports, "__esModule", { // <-- ReferenceError: exports is not defined
  value: true
});

但我没有在客户端上使用任何UMD / CommonJS模块加载器,因此此代码会导致错误。使用Babel 5,为了避免这种情况,我在gulpfile中使用了选项modules: 'ignore'

return gulp.src(src, {base: 'src'})
   .pipe(babel({
        modules: 'ignore' // <-- dropped from Babel 6
   }))
   .pipe(gulp.dest(dest));

因此它按原样编译我的脚本,原始且清晰。但是这个选项从Babel 6中删除了,现在它会导致错误 [ReferenceError: [BABEL] ..myscript.js: Unknown option: base.modules] ,所以我不得不评论这一行。

Babel 6中有modules: 'ignore'的替代品吗?

1 个答案:

答案 0 :(得分:4)

由于您默认使用es2015 this set of plugins。请注意,babel-plugin-transform-es2015-modules-commonjs就在那里。

如果您不想执行任何类型的模块转换,您需要明确列出您要使用的插件,而不是使用es2015