2013-10-22 9 views
7

मैं फ्रंटएंड कोड मॉड्यूलर करने के लिए ब्राउज़र के साथ नोड ऐप बना रहा हूं। दुर्भाग्य से, मैं नहीं बैकबोन काम कर रहा है क्योंकि यह इस त्रुटि फेंक है प्राप्त कर सकते हैं,:

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(); 
}); 

यह रीढ़ की तरह लग रहा है jQuery जब browserify का उपयोग कर नहीं पा सके ।

+0

आपको शायद रीढ़ की हड्डी के लिए एक शिम की ज़रूरत है, क्या आपके पास कहीं कॉन्फ़िगर है? – dezman

+0

"config" से आपका क्या मतलब है? बैकबोन को कॉमनजेएस मॉड्यूल के साथ काम करना चाहिए, इसलिए इसे शिम की आवश्यकता नहीं है। – rgtk

+0

$ अपरिभाषित है जब आप उस रेखा पर ब्रेकपॉइंट डालते हैं जो त्रुटि का कारण बनता है? – dezman

उत्तर

12

बस मैन्युअल रूप से Backbone.$ = window.$ सेट करें। बैकबोन एक ग्लोबल वैरिएबल में jquery की तलाश करता है (जिसे this कैप्चर करके परिभाषित किया गया है) और यह संभव है कि ग्लोबल संदर्भ में जो स्क्रिप्ट स्क्रिप्ट को ब्राउज़ न करें (जो कॉमनजेएस के अनुरूप है)।

+0

यह काम किया, लेकिन मुझे ऐसा करने की ज़रूरत क्यों है? jQuery वैश्विक चर में है क्योंकि यह किसी अन्य फ़ाइल से लोड किया गया है। – rgtk

+2

मुझे लगता है कि ऐसा कुछ होता है: http://jsfiddle.net/zw4Pc/1/, यानी, कार्यों में लपेटें मॉड्यूल को ब्राउज़ करें और मॉड्यूल संदर्भ जैसे किसी अन्य संदर्भ पर इसे कॉल करें। यदि बैकबोन ने 'विंडो '$' संदर्भ का उपयोग किया है, लेकिन बैकबोन jQuery को कैप्चर करने के लिए 'this। $' का उपयोग करता है। – vkurchatkin

संबंधित मुद्दे