2012-03-28 67 views
3

我正在使用Backbonejs,並且正在使用require.js在啓動我的應用程序並將所有內容放入自定義名稱空間之前加載每個相關骨幹小部件,在本例中爲「Foo」 。我想讓Jasmine加載這個加載器文件並獲取所有依賴的JavaScript(位於我的主應用程序的/ public/js中),但是,由於Jasmine不知道/ public/js目錄在端口8888.我怎樣才能讓茉莉花加載這些javascripts?與jasmine一起使用require.js加載腳本返回404

Foo = {}; 
    jQuery(function(){ 
    var include = ['/js/widget.js','/js/delta_widget.js','/js/inbox.js','/js/time_widget.js','/js/high_stock_widget.js','/js/daily_summary_widget.js']; 
    require(include,function(){ 
     $.getScript('/js/app.js'); 
    }); 
    }); 

對於每一個JavaScript的,我得到的: 無法加載資源:服務器迴應的404狀態(未找到)http://0.0.0.0:8888/js/widget.js

回答

2

這似乎是你的茉莉花加載程序文件/ SpecRunner與您的require.js加載器(默認情況下爲main.js)位於不同的目錄中。您必須配置require.js做使用不同的基本路徑如下:

jQuery(function(){ 
require.config(
{ 
    baseUrl: '/public' 
}); 

var include = ['js/widget.js', 
       'js/delta_widget.js', 
       'js/inbox.js', 
       'js/time_widget.js', 
       'js/high_stock_widget.js', 
       'js/daily_summary_widget.js']; 

require(include,function() 
{ 
    $.getScript('/js/app.js'); 
}); 

您必須配置上面「的baseUrl」屬性以指向正確的URL /路徑。 例如,如果你的茉莉花SpecRunner位於:

基地 - main.js - JS - widget.js - app.js - 利布斯 - 茉莉花 --- SpecRunner。 HTML

,那麼你需要配置

baseUrl: "../../" 

希望這有助於。