2016-09-02 6 views
6

Я пытаюсь переписать старое приложение, которое использует require.js для использования импорта es6. Одна из используемых библиотек - Backbone и Underscore. Чтобы создать один большой пакет и предварительно скомпоновать es6 на es5, я использую Webpack с загрузчиком babel. Bundle будет создаваться, но когда я загрузить его в браузере я получаю следующее сообщение об ошибке:Подчеркивание дает ошибку при связывании с 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

Какова ваша конфигурация webpack 'babel-loader'? Вероятно, вы потеряли что-то по строкам '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.

Смежные вопросы