我正在编写AngularJS
个应用,其中TypeScript
为转发器,SystemJS
用于模块加载。我尝试加载angular-ui-router
模块来配置路由,但未能这样做。我收到这个错误:
angular.js:38未捕获错误:[$ 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
进行脱毛。
任何线索?
答案 0 :(得分: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) => {
...
});