2017-05-31 80 views
0

我一直在努力獲得可處理的requireJS。requireJS無法加載Handsontable

獨立,handontable工程太棒了。

我得到以下錯誤:

app.js:37 Uncaught TypeError: Handsontable is not a constructor 
    at app.js:11 
    at Object.execCb (require.js:1693) 
    at Module.check (require.js:881) 
    at Module.<anonymous> (require.js:1136) 
    at require.js:134 
    at require.js:1186 
    at each (require.js:59) 
    at Module.emit (require.js:1185) 
    at Module.check (require.js:936) 
    at Module.enable (require.js:1173) 

這裏是一個最低限度的例子。 我的html代碼:

<html lang="en"><head> 
    <script data-main="static/js/app" src="static/js/require.js"> 
</script> 
    <link rel="stylesheet" media="screen" href="static/css/handsontable.css"> 
</head> 
    <body> 
     <div id="example"></div> 
    </body> 
</html> 

我app.js代碼(編輯:按照NHOR的回答):

requirejs.config({ 
    baseUrl: 'static', 
    waitSeconds: 10, 
    paths: { 
     // Handsontable full's requirements is in the plugin directory/ 
     // I shouldn't need them, but incase. 
     'pikaday': 'plugins/pikaday/pikaday', 
     'zeroclipboard': 'plugins/zeroclipboard/ZeroClipboard', 
     'moment': 'plugins/moment.min', 
     // Handsontable is directly in the static folder 
     'handsontable': 'handsontable' 
    } 
}); 
requirejs([ 
    'handsontable' 
], function(
    Handsontable 
) { 
    var data = [['', 'Kia', 'Nissan', 'Toyota', 'Honda'], 
       ['2008', 10, 11, 12, 13], 
       ['2009', 20, 11, 14, 13], 
       ['2009', 30, 15, 12, 13] 
       ]; 
    var hot = new Handsontable(document.getElementById('example'), { 
     data: data, 
     colHeaders: true, 
     rowHeaders: true, 
     minSpareRows: 1, 
     minSpareCols: 1, 
    }); 
}); 

根據hansontable的文檔,handsontable有AMD支持https://github.com/handsontable/handsontable。在我看來,我不明白requireJS。我沒有與我導入的其他模塊有這個問題。

任何幫助將不勝感激。

回答

1

您使用的是哪個版本?今天有完全相同的問題,恢復到版本0.31.2修復它。使用低於0.32.0的任何東西都可以。我知道這可能不是一個完美的SO解決方案/響應,但它的工作原理。

+0

非常感謝! 「升級」到版本0.31.2爲我修復了它。 (有0.32測試版)。 – user3035260

1

您錯過了handsontable庫路徑。 RequireJS需要知道您要使用的所有文件的路徑,這意味着您必須在requirejs.config函數中指定路徑。路徑可以通過HTTP指向本地文件系統或指向遠程資源。你可以閱讀更多關於它在這裏:http://requirejs.org/docs/api.html#jsfiles


@edit

其實我犯了一個小錯誤說路徑可以指向文件系統。這是因爲我習慣在HTTP路由中反映我的文件系統目錄結構,但實際上路徑應該指向文件駐留在HTTP服務器上的地方,例如,如果地址是http://127.0.0.1:8000/static/js/handsontable.jsbaseUrl應該是./static/js

+0

感謝您指出@Nhor。然而,我仍然得到相同的錯誤。 (我之前也試過,我用新的app.js更新了我的問題) – user3035260

+1

實際上,我犯了一個小錯誤,說道路可以指向文件系統。這是因爲我習慣於在HTTP路由中反映我的文件系統目錄結構,但實際上路徑應該指向文件駐留在HTTP服務器上的位置,例如,如果地址是http://127.0。 0.1:8000/static/js/handsontable','baseUrl'應該是'。/ static/js'。 – Nhor