2012-10-19 25 views
6

Tôi cố gắng để tải một module sử dụng require.js, và tôi có sau trong app.js tôi:require.js không tải bất kỳ module

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


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

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

Khi tôi chạy ứng dụng của tôi, tuy nhiên, mặc dù app.js đang được tải, mô-đun tôi đang yêu cầu không bao giờ được tải - "hello world" thực hiện, nhưng "không có gì ở đây" thì không!

thẻ Kịch bản của tôi trong trang HTML trông như thế này:

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

Và eh2.js nằm trong thư mục js, và nó được bọc trong một tuyên bố xác định:

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

gì tôi đang làm sai à? Là require.js âm thầm không tải một số submodule dưới screens.js, có lẽ?

Đây là mã từ Screens mô-đun:

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

Do các đường dẫn trong các cuộc gọi xác định cần phải được tương đối so với vị trí hiện tại của tập tin js Tôi đang ở, hoặc vào thư mục gốc quy định tại app.js, dù sao đi nữa?

+0

Bất kỳ lỗi trên chrome console hoặc firebug? –

+0

thử 'define (" eh2 ", [" ./screens/Screens "], ...);'. Ngoài ra kiểm tra xem kịch bản màn hình có được tải chính xác hay không - hãy xem bảng điều khiển mạng của bạn – Bergi

+0

require.js thường sẽ không bị lỗi, bạn sẽ gặp lỗi (đôi khi chúng có thể bị trì hoãn). Đảm bảo cũng bật tính năng ghi nhật ký yêu cầu không đồng bộ trong bất kỳ công cụ gỡ lỗi trình duyệt nào bạn đang sử dụng. –

Trả lời

5

thay thế này:

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

hoặc với một con đường absolut biến thể:

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

hoặc sử dụng:

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

Từ docs:

tên mô-đun tương đối bên trong xác định():

Đối với yêu cầu (" ./ người thân/name ") cuộc gọi có thể xảy ra bên trong một định nghĩa() gọi hàm, hãy chắc chắn để hỏi cho" yêu cầu" như một sự phụ thuộc, do đó tên tương đối được giải quyết một cách chính xác :

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

Hoặc tốt hơn, sử dụng rút ngắn cú pháp có sẵn để sử dụng với dịch CommonJS module:

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

Cảm ơn, nhưng tôi nghĩ rằng tôi vẫn còn có một cái gì đó sai trong app.js của tôi - "không có gì ở đây" không bao giờ xuất hiện, vì vậy nó thậm chí không tải tập tin eh2.js chính của tôi! – ekolis

+0

Hmm, tôi nghĩ rằng vấn đề của tôi có thể thực sự là tôi đã tạo ra một lớp được gọi là Màn hình, nó đang bị ghi đè bởi đối tượng Screen của trình duyệt! Tôi sẽ thử đổi tên nó ... – ekolis

+0

Có thể thậm chí không tải tệp eh2.js của bạn vì đây là tệp có định nghĩa sai mà tôi đã đề cập ở trên ..! – lrsjng

Các vấn đề liên quan