我正在使用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'
的替代品吗?
答案 0 :(得分:4)
由于您默认使用es2015
this set of plugins。请注意,babel-plugin-transform-es2015-modules-commonjs
就在那里。
如果您不想执行任何类型的模块转换,您需要明确列出您要使用的插件,而不是使用es2015
。