我正在使用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'
的方法?
window
对象),我更喜欢坚持已经完成的方式。 - artnikproes2015
? - loganfsmyth{"presets": ["es2015"], "plugins": ["syntax-async-functions", "transform-regenerator"]}
(两个插件用于async/await功能)。 - artnikpro