2012-10-19 16 views
6

मैं require.js का उपयोग कर एक मॉड्यूल लोड करने के लिए कोशिश कर रहा हूँ, और मैं अपने app.js में निम्नलिखित है:require.js किसी भी मॉड्यूल लोड नहीं है

require.config({ 
baseUrl: "js" 
}); 


alert("hello world"); // for debugging 

require(['eh2'], function(eh2) { 
    alert("nothing here"); // for debugging 
}); 

जब मैं, मेरी एप्लिकेशन को चलाने हालांकि, के बावजूद app.js लोड हो रहा है, जिस मॉड्यूल की मुझे आवश्यकता है वह कभी लोड नहीं होता है - "हैलो वर्ल्ड" निष्पादित करता है, लेकिन "यहां कुछ नहीं" नहीं है!

HTML पृष्ठ में मेरे स्क्रिप्ट टैग इस तरह दिखता है:

<script type="text/javascript" src="js/lib/require.js" data-main="app"></script> 

और eh2.js js फ़ोल्डर में स्थित है, और यह एक बयान को परिभाषित में लपेटा जाता है:

define(["./screens/Screens"], function(screens) { 
    return { 
     // code here 
    }; 
}); 

क्या क्या मैं गलत कर रहा हूँ? स्क्रीन.जेएस के तहत कुछ सबमिशन लोड करने पर चुपचाप असफल होने की आवश्यकता है। , या रूट में परिभाषित करने के लिए

define([ "screens/TitleScreen", "screens/GameScreen" ], function(titleScreen, gameScreen) { 
    return { 

     screenFuncs: { 
      "TitleScreen" : titleScreen.TitleScreen, 
      "GameScreen" : gameScreen.GameScreen, 
     }, 

     buildScreen: function(data) { 
      var func = screenFuncs[data.type]; 
      var screen = new func(data.params); 
      return screen; 
     }, 
    }; 
}); 

परिभाषित कॉल में रास्तों js फ़ाइल मैं तैयार हूं की वर्तमान स्थान के सापेक्ष करने की आवश्यकता है:

यहाँ स्क्रीन मॉड्यूल से कोड है app.js, वैसे भी?

+0

क्रोम कंसोल या फ़ायरबग पर कोई त्रुटि नहीं है? –

+0

'परिभाषित करें ("eh2", ["./screens/Screens"], ...); '। यह भी जांचें कि स्क्रीन-स्क्रिप्ट सही तरीके से लोड की गई है या नहीं - अपने नेटवर्क पैनल पर एक नज़र डालें – Bergi

+0

require.js सामान्य रूप से चुपचाप विफल नहीं होगा, आपको त्रुटियां मिलेंगी (उन्हें कभी-कभी देरी हो सकती है)। आप जिस भी ब्राउज़र डीबग टूल का उपयोग कर रहे हैं, उसमें एसिंक्रोनस अनुरोध लॉगिंग चालू करना सुनिश्चित करें। –

उत्तर

5

इस बदलें:

define(["./screens/Screens"], function(screens) { 
    .... 
}); 

या तो एक absolut पथ प्रकार के साथ:

define(["screens/Screens"], function(screens) { 
    .... 
}); 

या उपयोग:

define(function(require) { 
    var screens = require("./screens/Screens"); 
    .... 
}); 

docs से:

+०१२३५१६४१०

सापेक्ष मॉड्यूल नाम के अंदर परिभाषित():

के लिए आवश्यकता होती है ("./ रिश्तेदार/नाम") कॉल है कि एक को परिभाषित() फ़ंक्शन कॉल के अंदर हो सकता है, "के लिए पूछ लें "एक निर्भरता के रूप में की आवश्यकता होती है, तो यह है कि रिश्तेदार नाम सही ढंग से हल हो गई है:

define(["require", "./relative/name"], function(require) { 
    var mod = require("./relative/name"); 
}); 

या बेहतर अभी तक, छोटा का उपयोग वाक्य रचना कि अनुवाद CommonJS मॉड्यूल के साथ उपयोग के लिए उपलब्ध है:

define(function(require) { 
    var mod = require("./relative/name"); 
}); 
+0

धन्यवाद, लेकिन मुझे लगता है कि मुझे अभी भी मेरे app.js में कुछ गड़बड़ है - "यहां कुछ भी नहीं" कभी नहीं दिखाई देता है, इसलिए यह मेरी मुख्य eh2.js फ़ाइल भी लोड नहीं कर रहा है! – ekolis

+0

हम्म, मुझे लगता है कि मेरी समस्या वास्तव में हो सकती है कि मैंने स्क्रीन नामक एक क्लास बनाई है, जिसे ब्राउज़र की स्क्रीन ऑब्जेक्ट द्वारा ओवरराइड किया जा रहा है! मैं इसे नाम बदलने का प्रयास करूंगा ... – ekolis

+0

शायद यह आपकी eh2.js फ़ाइल को भी लोड नहीं कर रहा है क्योंकि यह उपरोक्त वर्णित गलत परिभाषा वाली फ़ाइल है ..! – lrsjng

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