2015-12-09 4 views
6

Also zuerst .. ich nächste Schluck Aufgabe haben:"this" in Strich wird nach dem Kompilieren mit browserify undefiniert und debowerify

gulp.task('js', function() { 
    browserify('./src/js/main.js') 
     .bundle() 
     .on('error', onError) 
     .pipe(source('main.js')) 
     .pipe(gulp.dest(path.build.js)); 
}); 

und package.json:

{ 
    "browserify": { 
    "transform": [ 
     ["babelify", { "presets": ["es2015"] }], 
     "debowerify" 
    ] 
    }, 
} 

Ich Import Backbone in main.js (oder nur unterstreichen ... es spielt keine Rolle)

import Backbone from 'backbone'; 

und in der Konsole erhalte ich Fehler

Uncaught TypeError: Cannot read property '_' of undefined

geprüft I-Code und festgestellt, dass in Strich Quellen am Anfang der Bibliothek root denke

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

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

undefiniert ich das Problem, dass debowerify oder babelfy Code in irgendeiner Funktion wickelt. Aber auch wenn ich Knotenmodule ohne debowerify benutze funktioniert alles einwandfrei. Aber ich möchte Bower benutzen.

Also, wie um dieses Problem zu beheben?

+0

Gleicher Fehler über ein Jahr hinweg, diesmal aufgrund der Verwendung von webpack - Haben Sie dieses Problem auf eine schönere Art gelöst? – Patrick

Antwort

0

In meinem Fall trat der gleiche Fehler auf, wenn nur blossify mit Unterstrich verwendet wurde. Ich habe ein Problem behoben, indem ich von Unterstrich zu lodash wechselte. Sie sind im Allgemeinen (sicherlich nicht vollständig) kompatibel, aber im schlimmsten Fall würde ich lieber eine fehlende Funktion von Unterstreichquellen kopieren, als mit ihrer deisolierten Lastmethode zu leben.

0

für alle künftigen Besucher auf diese Frage,

dies ist ähnlich wie Underscore gives error when bundling with Webpack

Der Kern der Frage, dass babel ist wahrscheinlich die Underscore.js Code ausgeführt wird, da Underscore.js this verwendet, und in es6 this ist undefiniert, wenn außerhalb einer Funktion, natürlich this._ schlägt fehl.

In Code habe ich das Problem behoben, indem sichergestellt wird, dass babel nicht auf node_modules ausgeführt wird.