2016-09-02 14 views
6

我正在尝试重写使用require.js来使用es6导入的旧应用程序。其中一个使用的库是Backbone和Underscore。要创建一个大包并将es6预编译为es5,我使用带有babel-loader的Webpack。 包被创建,但是当我在浏览器中加载它,我收到以下错误:与Webpack捆绑时,下划线给出错误

Uncaught TypeError: Cannot read property '_' of undefined 

看来,“这个”在下划线中创建bundle.js未定义所以root._给我的错误。

// Baseline setup 
// -------------- 

// Establish the root object, `window` in the browser, or `global` on the server. 
var root = this; 

// Save the previous value of the `_` variable. 
var previousUnderscore = root._; 

// Establish the object that gets returned to break out of a loop iteration. 
var breaker = {} 

有人遇到同样的问题?

+0

你的'babel-loader' webpack配置是什么?您可能错过了'exclude:/ node_modules /'的行。 – loganfsmyth

+0

Tnx很多!将'exclude:/ node_modules /'添加到'babel-loader' webpack config解决了这个问题! –

回答

20

babel-loader处理的文件与es2015预设由Babel作为ES6模块进行处理。在ES6模块中,this以外的功能是undefined。在你的情况,你需要

exclude: /node_modules/, 

添加到您的babel-loader的配置,这样它只会处理自己的代码。目前,您可能也会在所有节点模块上运行Babel,其中很多不希望通过Babel运行,也不打算成为ES6模块。