【问题标题】:requireJS fails to load HandsontablerequireJS 无法加载 Handsontable
【发布时间】:2017-11-01 01:32:10
【问题描述】:

我一直在努力让自己动手使用 requireJS。

就其本身而言,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 有一些不明白的地方。我导入的其他模块没有这个问题。

任何帮助将不胜感激。

【问题讨论】:

    标签: javascript requirejs handsontable


    【解决方案1】:

    您缺少 handsontable 库路径。 RequireJS 需要知道您要使用的所有文件的路径,这意味着您必须在 requirejs.config 函数中指定路径。这些路径既可以指向您的本地文件系统,也可以通过 HTTP 指向远程资源。你可以在这里阅读更多信息:http://requirejs.org/docs/api.html#jsfiles


    @编辑

    实际上我犯了一个小错误,说路径可以指向文件系统。那是因为我习惯于在 HTTP 路由中反映我的文件系统目录结构,但实际上路径应该指向文件驻留在 HTTP 服务器上的位置,例如如果地址是http://127.0.0.1:8000/static/js/handsontable.js,则@987654326 @ 应该是 ./static/js

    【讨论】:

    • 感谢@Nhor 指出这一点。但是,我仍然遇到同样的错误。 (我之前也试过。我用新的 app.js 更新了我的问题)
    • 实际上我犯了一个小错误,说路径可以指向文件系统。那是因为我习惯于在 HTTP 路由中反映我的文件系统目录结构,但实际上路径应该指向文件驻留在 HTTP 服务器上的位置,例如如果地址是http://127.0.0.1:8000/static/js/handsontable,则@987654329 @ 应该是 ./static/js
    【解决方案2】:

    您使用的是哪个版本?今天遇到了完全相同的问题,恢复到版本 0.31.2 修复了它。使用低于 0.32.0 的任何东西都可以正常工作。我知道这可能不是一个完美的 SO 解决方案/响应,但它确实有效。

    【讨论】:

    • 非常感谢! “升级”到版本 0.31.2 为我修复了它。 (有 0.32 测试版)。
    猜你喜欢
    • 1970-01-01
    • 2014-03-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-06-26
    • 1970-01-01
    相关资源
    最近更新 更多