2013-10-22 65 views
7

我正在用browserify創建節點應用程序來模塊化前端代碼。 不幸的是,我不能讓骨幹的工作,因爲它是引發此錯誤:

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

jQuery是這個腳本之前加載:

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

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

它看起來像骨幹使用browserify時找不到的jQuery 。

+0

你可能需要一個墊片,你有配置的地方嗎? – dezman

+0

「config」是什麼意思? Backbone應該與CommonJS模塊一起工作,因此它不需要墊片。當你在導致錯誤的行上放置一個斷點時, – rgtk

+0

是$ undefined? – dezman

回答

12

手動設置Backbone.$ = window.$。 Backbone在一個全局變量(它是通過捕獲this來定義的)查找jQuery,並且它很可能不在全局上下文(這與CommonJS一致)中運行腳本。

+0

它的工作,但爲什麼我需要這樣做? jQuery是全局變量,因爲它是從另一個文件加載的。 – rgtk

+2

我認爲這樣的事情發生了:http://jsfiddle.net/zw4Pc/1/,也就是說,browserify在函數中包裝模塊,並在模塊上下文中調用它。如果Backbone使用'window. $'引用它,但Backbone使用'this。$'來捕獲jQuery。 – vkurchatkin

相關問題