2015-12-12 56 views
3

我使用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'嗎?

+0

因此,如果在插件中指定可以讓編譯器將您的ES6/7代碼轉換爲使用模塊,則在我看來... [source](http://babeljs.io/docs/plugins/transform -es2015模塊-UMD /)。你使用進口或類似的東西? –

+0

@CallumLinington,感謝您的回覆。我只在服務器端使用導入/導出,但客戶端分離並通過API連接到服務器。我沒有使用Webpack或Browserify,只是使用Babel將es6代碼轉換爲es5.I嘗試安裝您建議的模塊,因此它現在用UMD代碼包裝我的每個文件。但是我的代碼更傾向於使用全局作用域('window'對象),我更願意堅持已經完成的方式。 – artnikpro

+0

您是否在某處配置了Babel配置以啓用預設?我假設你已經啓用了'es2015'? – loganfsmyth

回答

4

由於您使用的是默認啓用的es2015this set of plugins。請注意0​​在那裏。

如果您不想執行任何類型的模塊轉換,您需要明確列出您要使用的插件,而不是使用es2015

+0

我怎麼能不知道我的自我...這麼簡單...謝謝! – artnikpro

+0

更新了[插件集]鏈接(https://github.com/babel/babel/blob/master/packages/babel-preset-es2015/package.json) – cantera

相關問題