无法使用JSPM

时间:2016-02-04 12:13:28

标签: javascript angularjs kendo-ui ecmascript-6 jspm

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

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

在某个文件中,我正在导入 jQuery Angular 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 Core代码在Angular出现之前执行,或者我认为是这样,因为Kendo UI的文档说明:

  

要激活Angular绑定,请在加载前加载angular.js   剑道UI。因此,请按照下面显示的顺序加载脚本。

此外,我已尝试修复向 config.js 添加meta属性的问题:

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存在于全局范围内。

1 个答案:

答案 0 :(得分:0)

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

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"meta手动添加map并强制"kendo-ui"依赖"kendo.ui.core" ...

的原因

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