无法使用 JSPM 实例化模块 kendo.directives

Failed to instantiate module kendo.directives using JSPM

我正在尝试加载 Kendo UI All 与 Angular 的集成,以便能够使用其内置的 UI 小部件指令。

我使用以下命令安装了软件包:jspm install kendo-ui

在某些文件中,我正在导入 jQueryAngular Kendo UI:

import jquery from "jquery";
import ng from "angular";
import kendoUi from "kendo-ui";

angular.module("common", [
    "kendo.directives"
]);

我的 config.js 看起来如下:

...
 map: {
    "kendo-ui": "github:kendo-labs/bower-kendo-ui@2016.1.125"
 }
...

...当我加载应用程序时,我收到了整个 "Failed to instantiate module kendo.directives" 错误消息。

似乎 Kendo UI 核心代码在 Angular 出现之前执行,或者我认为是这样,因为 Kendo UI 的文档状态:

To activate the Angular bindings, load angular.js before you load Kendo UI. Therefore, load the scripts in the order shown below.

此外,我尝试通过添加 meta 属性 到 config.js:

来解决这个问题
meta: {
    'kendo-angular': {
        exports: 'kendo',
        deps: [
            "jquery",
            "angular",
            "kendo-ui"
        ]
    }
}

...以及 map 的条目:

"kendo-angular": "github:kendo-labs/bower-kendo-ui@2016.1.125/js/kendo.angular.min"

现在似乎已加载 kendo.angular.min.js,但它会抛出以下错误消息:"Cannot read property 'jQuery' of undefined"...

更新

问题似乎根本不是加载顺序:没有使用我昨天做的试错(关于 mapmeta 的事情),错误 "Failed to instantiate module kendo.directives" 不应该发生,因为包正在加载 kendo.ui.core,其中已经包含模块 kendo.directives.

另一方面,我试图在所谓文件的未缩小版本上放置断点,结果是定义 Angular kendo.directives 模块的代码永远不会执行,但是源代码的其他部分,当我设置断点时,它被命中并且 Angular 出现在全局范围内。

最后我设法解决了这个问题。

config.js:

  ...
  meta: {
    "kendo-ui": {
        deps: ["kendo.ui.core"]
    },
    "kendo.ui.core": {
      "deps": [
        "angular"
      ]
    }
  }
  ...
  map: {
    "kendo-ui": "github:kendo-labs/bower-kendo-ui@2016.1.125",
    "kendo.ui.core": "github:kendo-labs/bower-kendo-ui@2016.1.125/src/js/kendo.ui.core"
  }

查看 kendo.ui.core 源代码并尝试对其进行调试后,我发现他们的 "kendo.ui.core" AMD 模块已定义,但代码从未要求。因此,所有按 "kendo.ui.core" AMD 模块分组的模块从未被加载。

这就是手动将 "kendo.ui.core" 添加到 metamap 并强制 "kendo-ui" 依赖于 "kendo.ui.core"...[= 的原因21=]

我仍然认为这不是最终的解决方案。 I've already posted an issue on Kendo UI GitHub repository 让事情朝着正确的方向前进。