2015-12-09 9 views
6

をdebowerify ..私は次の一口タスク持っている:"は、この" アンダースコアでbrowserifyでコンパイル後は不定ので、最初

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

とpackage.json:

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

を私はしてバックボーンをインポートしていますmain.js(または唯一のそれは問題ではない...アンダースコア)

import Backbone from 'backbone'; 

とコンソールで、私はエラー

012を取得しています

Uncaught TypeError: Cannot read property '_' of undefined

私は、コードをチェックし、アンダースコアソースにライブラリーrootの開始時に、私は問題がdebowerifyまたはbabelfyは、いくつかの機能のコードをラップしていることだと思う未定義

// 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._; 

であることがわかりました。しかし、私がdebowerifyせずにノードモジュールを使用する場合、すべて正常に動作します。しかし、私はバワーを使いたい。

この問題を解決するにはどうすればよいですか?

+0

webpackを使用しているため、今回は1年以上同じエラーが発生しました。この問題をもっときれいに解決できましたか? – Patrick

答えて

0

私の場合は、browserifyをアンダースコアで使用すると同じエラーが発生しました。アンダースコアからロダッシュに切り替えることで問題を解決しました。それらは一般的には(完全には完全には)互換性がありませんが、最悪の場合、アンダースコアソースから欠落している機能を、その分離された負荷アプローチよりもむしろコピーしたいと思います。この質問への将来の訪問者に

0

これが問題の要点Underscore gives error when bundling with Webpack

に似てunderscore.jsはthisを使用していますので、そのバベルはおそらく、underscore.jsコードを実行され、そして関数の外ではは定義されていません。当然this._は失敗します。

コードでは、babelがnode_modulesで実行されないようにすることで問題を解決しました。

関連する問題