2013-10-22 26 views
7

フロントエンドコードをモジュール化するためにbrowserifyでノードアプリケーションを作成しています。このエラーをスローだから 残念ながら、私は、作業バックボーンを取得することはできません:jQueryのは、このスクリプトの前にロードされている

Uncaught TypeError: Property '$' of object #<Object> is not a function 

var _ = require('underscore'), 
    Backbone = require('backbone'); 

// Here, jQuery works fine. 
$(function() { 
    Backbone.history.start(); 
}); 

これは、バックボーンのように思われますbrowserifyを使用するときにjQueryを見つけることができませんでした。

+0

おそらく、バックボーン用のシムが必要です。設定はどこかにありますか? – dezman

+0

"config"とはどういう意味ですか?バックボーンはCommonJSモジュールと連携する必要がありますので、シムは必要ありません。エラーの原因となる行にブレークポイントを設定すると、 – rgtk

+0

は$ undefinedになりますか? – dezman

答えて

12

Backbone.$ = window.$を手動で設定してください。バックボーンはグローバル変数(これはキャプチャthisで定義されています)内でjqueryを探します。そのため、browserifyはグローバルコンテキストではないスクリプトを実行します(これはCommonJSと一貫しています)。

+0

それは働いたが、なぜ私はそれをする必要があるのですか? jQueryは別のファイルからロードされているため、グローバル変数にあります。 – rgtk

+2

私はこのようなことが起こると思います:http://jsfiddle.net/zw4Pc/1/つまり、browserifyはモジュールを関数でラップし、モジュールコンテキストのような他のコンテキストで呼び出します。 Backboneが 'window。$'参照を使用している場合、Backboneは 'this。$'を使用してjQueryを取得します。 – vkurchatkin

関連する問題