Posted at

BrowserifyでBackbone.jsを使うときのjQueryの解決

More than 5 years have passed since last update.

Browserifyで次のように書いたら動かなかった。(bowerとdebowerifyも使ってる)


app.js

var Backbone = require('backbone');

var view = new Backbone.View(); //=> Uncaught TypeError: Property '$' of object #<Object> is not a function


これはBackbone.jsの現在のバージョン(1.1.0)での$の解決がrequireを使わずに次のようになっているから。


backbone.js

Backbone.$ = root.jQuery || root.Zepto || root.ender || root.$;


https://github.com/jashkenas/backbone/blob/1.1.0/backbone.js#L46

※ ちなみにUnderscore.jsはrequireで解決されてる。(source

なのでjQueryは自分で解決してあげないとだめ。


app.js

var $ = require('jquery');

var Backbone = require('backbone');
Backbone.$ = $;

var view = new Backbone.View();


せっかくBrowserifyとBowerでいい感じに依存関係解決できるのにつらい感じはある。

と思ってたけど、Backboneのmasterではこの問題が解決されてる(source)。

ので、

$ bower install backbone#master

すれば、自動的にjQueryを解決してくれる。

はよリリースしてほしい。