Не удалось создать экземпляр модуля kendo.directives с помощью JSPM
Я пытаюсь загрузить Kendo UI All интеграцию с Angular, чтобы иметь возможность использовать его встроенные директивы виджета 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.js перед загрузкой Kendo UI. Поэтому загружайте скрипты в порядке, указанном ниже.
Кроме того, я попытался исправить проблему, добавив 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"
...
Обновить
Кажется, что проблема вовсе не в порядке загрузки: без использования пробной ошибки, которую я сделал вчера (вещь о map
а также meta
), Ошибка "Failed to instantiate module kendo.directives"
не должно произойти, потому что пакет загружается kendo.ui.core
, который уже включает в себя модуль kendo.directives
,
С другой стороны, я попытался поставить точку останова на незавершенной версии так называемого файла, и в результате получился код, определяющий Angular. kendo.directives
Модуль никогда не выполняется, но в какой-то другой части исходного кода, когда я устанавливаю точку останова, он срабатывает, и Angular присутствует в глобальной области видимости.
1 ответ
Наконец мне удалось решить проблему.
На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"
...
Я все еще думаю, что это не окончательное решение. Я уже опубликовал проблему в репозитории Kendo UI GitHub, которая позволяет двигаться в правильном направлении.