我有以下类型脚本文件

/// <reference path="../../_references.ts" />
var app = require("modules/app");
var spactrl = require("controllers/spactrl");

var main = function (app: ng.IModule) {
    app.config(function ($routeProvider: ng.route.IRouteProvider) {
        $routeProvider.when("/", { controller: "HomeCtrl", templateUrl:"/spa/template/greet" });
    });
}
export = main;

但是当我把它编译成amd时,我得到了这个输出
define(["require", "exports"], function(require, exports) {
    /// <reference path="../../_references.ts" />
    var app = require("modules/app");
    var spactrl = require("controllers/spactrl");

    var main = function (app) {
        app.config(function ($routeProvider) {
            $routeProvider.when("/", { controller: "HomeCtrl", templateUrl: "/spa/template/greet" });
        });
    };

    return main;
});
//# sourceMappingURL=main.js.map

这将导致尚未为上下文加载“modules/app”的“module name”错误:
查看Requirejs的文档http://requirejs.org/docs/errors.html#notloaded
看起来生成的文件应该包含我所需的“modules/app”,或者一起去掉依赖数组。
有办法解决这个问题吗?还是我做错了什么?

最佳答案

我查看了您的代码,您正试图通过require调用加载js模块。例如:
https://github.com/odytrice/RequireAngular/blob/dev/RequireAngular/Scripts/app/modules/app.ts

require("angular-route");
require("angular-resource");
require("angular-animate");

这将不起作用,因为typescript不知道这些需要调用,并且无法将其添加到define部分。要告诉typescript这一点,您需要使用/// <amd-dependency
附:我有一个关于这个主题的视频:http://www.youtube.com/watch?v=4AGQpv0MKsA&hd=1

关于typescript - Typescript AMD模块错误(尚未为上下文加载模块),我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/21727368/

10-16 17:49
查看更多