捆绑的打字稿中的Javascript执行顺序问题

时间:2015-08-31 21:34:24

标签: angularjs visual-studio visual-studio-2013 typescript bundle

捆绑时生成的javascript的执行顺序出现问题。 当我将它们捆绑在一起时,我收到了这个错误。

  

未捕获错误:[$ injector:nomod]模块'app.demo'不可用!您要么错误拼写了模块名称,要么忘记加载它。如果注册模块,请确保将依赖项指定为第二个参数。

我相信我已将其缩小为angular.module("app.demo").service()在合并angular.module("app.demo", [])appbundle.js之前调用。

我已经设置了这样的捆绑。在visual studio 2013中。 typescript setup

我的文件夹结构如下:

folder structure

我在index.html中包含它。

<script src="App/appbundle.js"></script>

相关的打字稿文件:

app.module.ts

module App {
    "use strict";

    // Create the module and define its dependencies.
    angular.module("app", [
        // Angular modules
        "app.core",
        "app.demo",
        "app.services"
    ]);
}

demo.service.ts

module App.Services {
    "use strict";

    export interface IDemoService {
        getData: () => Array<string>;
    }

    class demoService implements IDemoService {
        static $inject: string[] = ["$http"];

        constructor(private $http: ng.IHttpService) {
        }

        getData(): Array<string> {
            return ["one", "two", "three"];
        }
    }

    angular.module("app.services").service("demoService", demoService);
}

services.module.ts

module App.Services {
    "use strict";

    // Create the module and define its dependencies.
    angular.module("app.services", []);
}

如前所述。我认为问题来自于文件合并到appbundle.js

的顺序

所以我的问题是。 如何在保留捆绑功能的同时解决此问题?

我意识到重命名文件会改变它们包含的顺序。但那不是我愿意做的事情:)

1 个答案:

答案 0 :(得分:0)

  

如何在保留捆绑功能的同时解决此问题?

使用外部捆绑包,例如的WebPack。

更多:https://github.com/TypeStrong/atom-typescript/blob/master/docs/out.md