【问题标题】:Typescript AMD external module loading, angular is not definedTypescript AMD外部模块加载,未定义角度
【发布时间】:2014-08-01 18:53:36
【问题描述】:

我知道关于这个主题已经有一些类似的问题,但不知何故,它们都没有帮助。 我想在使用 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) {
...
}

当我运行应用程序时,浏览器报错:Uncaught ReferenceError: angular is not defined

我的猜测是,除了引用它之外,我应该以某种方式导入角度,但我尝试过的路径都不起作用。

这是我的 require.js 配置,以备不时之需:

require.config({

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

你能帮我吗,这里缺少什么? 谢谢。

【问题讨论】:

    标签: requirejs typescript amd


    【解决方案1】:

    当您使用参考评论时:

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

    您是在告诉编译器“我将确保此依赖项在运行时可用”。

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

    import angular = require('angular');
    

    执行此操作的零设置方法是将angular.d.ts 文件放在实际的angular.js 文件旁边,因此您在导入语句中指定的路径是相同的 - 否则,请使用您的要求配置摆动路径。

    【讨论】:

    • 谢谢!一个很好的解释它是如何工作的,但上面发布的单线最容易解决我的问题。
    【解决方案2】:

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

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

    这应该让 ts 编译器将 angular 添加到定义列表中。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-10-05
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多