打字稿AMD外部模块加载,角度未定义

时间:2014-07-31 19:28:08

标签: requirejs typescript amd

我知道这个话题已经有一些类似的问题了,但不知怎的,它们都没有帮助。 我想在一个使用requirejs和Typescript的项目中使用angular.js。

我有一个模块,我使用angular来创建一个服务模块:

/// <reference path="../../../typings/angularjs/angular.d.ts" />
...
var services = angular.module('services', []);
...
export = services;

这段代码编译时没有错误,但是在创建的js文件中,还没有angular.js依赖:

define(["require", "exports"], function(require, exports) {
...
}

当我运行应用程序时,浏览器会抱怨:未捕获的ReferenceError:angular未定义

我的猜测是,不管怎么说,除了引用它之外,我还应该输入角度,但是我试过的路径都没有。

以下是我的require.js配置,以备需要时使用:

require.config({

    paths: {
        angular: '../lib/angular/angular',
        ...
    },
    shim: {
        angular : {exports : 'angular'},
        ...
    }
)}

你可以帮助我,这里缺少什么? 感谢。

2 个答案:

答案 0 :(得分:5)

使用参考评论时:

/// <reference path="../../../typings/angularjs/angular.d.ts" />

您告诉编译器&#34;我将确保此依赖项在运行时可用&#34;。

如果要加载模块,则需要使用导入...

import angular = require('angular');

这样做的零设置方法是将angular.d.ts文件放在实际的angular.js文件旁边,这样你在import语句中指定的路径都是相同的 - 否则,使用你的require配置来摆弄路径。

答案 1 :(得分:1)

您是否尝试将以下内容添加到文件顶部

 /// <amd-dependency path="angular"/>

这应该使ts编译器为定义列表添加角度。