2015-06-30 88 views
1

我有以下的目錄結構,和以下文件:RequireJS - 相對路徑問題加載劍道UI模塊時

root 
|--libs 
    |--jquery 
     |--jquery-1.9.1.js 
    |--kendo 
     |--kendo.button.min.js 
     |--kendo.core.min.js 

RequireJS配置定義如下

require.config(
{ 
    baseUrl: 'path to root', 
    paths: 
    { 
    'jquery': 'libs/jquery/jquery-1.9.1', 
    'kendo-button': 'libs/kendo/kendo.button.min' 
    }, 
    shim: 
    { 
    'kendo-button': 
    { 
     deps: ['jquery'] 
    } 
    } 
}); 

我有一個模塊,對'kendo-button'有依賴關係

define(
    ['kendo-button'], 
    function(kendoButton) 
    { 
    ..code to create a kendo button 
    }); 

當加載這個模塊時,它會拋出一個er ror錯誤狀態404

script error for:kendo.core.min。

我看到requirejs正在尋找kendo.core.min.js而不是在kendo文件夾中。

我在這裏做錯了什麼?

注: kendo.button.min有依賴於kendo.core.min

回答

-1

使用這樣:

require.config(
{ 
    baseUrl: 'path to root', 
    paths: 
    { 
    'jquery': './libs/jquery/jquery-1.9.1', 
    'kendo-button': './libs/kendo/kendo.button.min' 
    }, 
    shim: 
    { 
    'kendo-button': 
    { 
     deps: ['jquery'] 
    } 
    } 
}); 
+0

不是絕對的路徑已經被解釋爲相對於'baseUrl'。將'。/'添加到路徑的開頭並不會改變任何內容。 – Louis

0

如果你看看kendo.button.min.js模塊你會看到這個模塊依賴於kendo.core.min.js。因此,RequireJS會嘗試從你的'path to root'/ kendo.core.min.js的位置下載這個模塊,這會導致404錯誤。所以,我如下將修改require.config:

require.config(
{ 
    baseUrl: 'path to root', 
    paths: 
    { 
    'jquery': 'libs/jquery/jquery-1.9.1', 
    'kendo-button': 'libs/kendo/kendo.button.min', 
    'kendo.core.min': 'libs/kendo/kendo.core.min'  
    }, 
    shim: 
    { 
    'kendo-button': 
    { 
     deps: ['jquery'] 
    } 
    } 
}); 

同時,請確保您複製模塊kendo.core.min.js到庫/劍道文件夾。