我使用Gulp和Babel將客戶端es6代碼編譯爲es5。升級後,我得到這個錯誤(在瀏覽器): Uncaught ReferenceError: exports is not defined
從Babel 5遷移到6時出錯(ReferenceError:exports is not defined)
原因這個錯誤,是通天編譯我的客戶端腳本,CommonJS的模塊,並在每個文件的開頭添加此行:
Object.defineProperty(exports, "__esModule", { // <-- ReferenceError: exports is not defined
value: true
});
但是我沒有在客戶端上使用任何UMD/CommonJS模塊加載器,所以這段代碼會導致錯誤。隨着巴貝爾5,避免這種情況,我用的是選項modules: 'ignore'
在我gulpfile:
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'
嗎?
因此,如果在插件中指定可以讓編譯器將您的ES6/7代碼轉換爲使用模塊,則在我看來... [source](http://babeljs.io/docs/plugins/transform -es2015模塊-UMD /)。你使用進口或類似的東西? –
@CallumLinington,感謝您的回覆。我只在服務器端使用導入/導出,但客戶端分離並通過API連接到服務器。我沒有使用Webpack或Browserify,只是使用Babel將es6代碼轉換爲es5.I嘗試安裝您建議的模塊,因此它現在用UMD代碼包裝我的每個文件。但是我的代碼更傾向於使用全局作用域('window'對象),我更願意堅持已經完成的方式。 – artnikpro
您是否在某處配置了Babel配置以啓用預設?我假設你已經啓用了'es2015'? – loganfsmyth