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