TypeScript и SystemJS: модуль маршрутизатора angular ui не зарегистрирован в транспилированном js

Я пишу приложение AngularJS с TypeScript в качестве транспилятора и SystemJS для загрузки модуля. Я пытаюсь загрузить модуль angular-ui-router для настройки маршрутизации, но не могу этого сделать. Я получаю эту ошибку:

angular.js:38 Uncaught Error: [$injector:modulerr]

Это сценарий:

import * as angular from "angular";
import * as router from "angular-ui-router";

const app: angular.IModule = angular.module("my.website", ["ui.router"]);
app.config((stateProvider: router.IStateProvider) => {
    ...
});

Вот как транспилируется скрипт:

System.register(["angular"], function(exports_1, context_1) {
...

Как видите, angular-ui-router не зарегистрирован, поэтому модуль не загружен. Почему? Что я делаю не так?

Для полноты: это конфигурация SystemJS:

System.config({
    defaultJSExtensions: true,
    map: {
        "angular": "https://ajax.googleapis.com/ajax/libs/angularjs/1.5.6/angular.min.js",
        "angular-ui-router": "https://cdnjs.cloudflare.com/ajax/libs/angular-ui-router/0.3.1/angular-ui-router.min.js"
    }
});

Это соответствующие настройки TypeScript:

"target": "es5",
"module": "system"

Я загрузил файлы определения TypeScript, используя typings.

Транспиляция выполняется gulp-typescript.

Любые подсказки?


person fikkatra    schedule 17.06.2016    source источник


Ответы (1)


Мне удалось заставить его работать, импортировав как файл, так и модуль. Уродливо, как это может быть, это работает:

import * as angular from "angular";
import "angular-ui-router";
import * as router from "angular-ui-router";

const app: angular.IModule = angular.module("my.website", ["ui.router"]);
app.config((stateProvider: router.IStateProvider) => {
    ...
});
person fikkatra    schedule 04.07.2016