2016-09-02 32 views
6

Próbuję przepisać starą aplikację, która używa require.js do importowania es6. Jedną z używanych bibliotek są Backbone i Underscore. Aby utworzyć jeden duży pakiet i wstępnie skompilować es6 do wersji es5, korzystam z pakietu Webpack z programem babel-loader. Bundle zostanie utworzona, ale kiedy załadować go w przeglądarce otrzymuję następujący błąd:Podkreślenie powoduje błąd podczas pakowania w pakiecie Webpack

Uncaught TypeError: Cannot read property '_' of undefined 

Wydaje się, że „to” w podkreślenia jest niezdefiniowane w utworzonych bundle.js tak root._ daje mi błąd.

// 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 = {} 

Ktoś doświadczył tego samego problemu?

+0

Co to jest konfiguracja Web Pack "babel-loader"? Prawdopodobnie brakuje czegoś wzdłuż linii 'exclude:/node_modules /'. – loganfsmyth

+0

Tnx dużo! Dodanie 'exclude:/node_modules /' do konfiguracji pakietu 'babel-loader' rozwiązało problem! –

Odpowiedz

20

Pliki przetworzone przez babel-loader z ustawieniami es2015 są przetwarzane przez Babel jako moduły ES6. W modułach ES6, this poza funkcjami jest undefined. W twoim przypadku trzeba dodać

exclude: /node_modules/, 

do babel-loader config tak, że będzie przetwarzać tylko swój własny kod. Obecnie prawdopodobnie używasz Babel również na wszystkich modułach węzła, z których wiele nie oczekuje uruchomienia przez Babel i nie ma być modułami ES6.