javascript - TypeScript 和 SystemJS : angular ui router module not registered in transpiled js

标签 javascript angularjs typescript systemjs es6-module-loader

我正在编写一个 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"

我已使用 typings 加载了 TypeScript 定义文件。

翻译由gulp-typescript完成。

有什么线索吗?

最佳答案

我设法通过导入文件和模块来使其工作。尽管它可能很丑陋,但这很有效:

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) => {
    ...
});

关于javascript - TypeScript 和 SystemJS : angular ui router module not registered in transpiled js,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37884658/

相关文章:

javascript - Karma 未按预期运行 Angular 测试

javascript - React Router 嵌套路由不渲染

javascript - 使用 jQuery 查找和替换元素的类

javascript - jQuery 动态表单,且 PHP $_FILES 为空

javascript - AngularJS 的异步特性与摘要/应用

javascript - ng-mouseover 事件传递 'this'(自身)对 DOM 的引用不起作用。除了使用核心 javascript 事件之外,还有其他方法吗?

node.js - 无法在 VS Code 中设置断点调试 Node Typescript

javascript - JHipster - 函数完成后执行代码

javascript - 单击时反转 html 的颜色(imgs 除外)

javascript - 在 Javascript 中,什么时候需要将命名函数分配给变量?