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

gsa*_*nta 1 amd requirejs typescript

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

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

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

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

define(["require", "exports"], function(require, exports) {
...
}
Run Code Online (Sandbox Code Playgroud)

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

我的猜测是,除了引用它之外我还应该导入角度,但是我试过的路径都没有.

这是我的require.js配置,以防需要:

require.config({

    paths: {
        angular: '../lib/angular/angular',
        ...
    },
    shim: {
        angular : {exports : 'angular'},
        ...
    }
)}
Run Code Online (Sandbox Code Playgroud)

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

Fen*_*ton 5

当您使用参考评论时:

/// <reference path="../../../typings/angularjs/angular.d.ts" />
Run Code Online (Sandbox Code Playgroud)

您告诉编译器"我将确保此依赖项在运行时可用".

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

import angular = require('angular');
Run Code Online (Sandbox Code Playgroud)

这样做的零设置方法是将angular.d.ts文件放在实际文件旁边angular.js,因此在import语句中指定的路径也是相同的 - 否则,使用require config来填充路径.