使用带有typescript的browserify来包含节点模块

时间:2014-05-08 18:08:34

标签: javascript node.js typescript browserify

我正在尝试在打字稿应用程序中使用节点模块,并通过require()将其包含在我的TypeScript代码中。

我将我的打字稿构建到JS,如果我通过节点运行它,一切运行良好。

我正在寻找一种方法来使用相同的代码并通过浏览器运行它。 Browserify似乎是一个明智的解决方案。

我在我的VS项目上弹出了一个构建后的动作,我正在通过browserify构建一个206KB的文件(所以它肯定在做什么!)。不幸的是,当它被浏览时,我的一小部分Typescript似乎无法访问。 我不熟悉browserify应该生成什么,所以不太确定它包含我的.js代码是否正确(如果有帮助,可以发布片段。)

所以我的问题确实是双重的,我正在寻找答案:

  1. 是否有推荐的方法来编写TypeScript post 0.9以允许它在浏览器化后运行?
  2. 有没有办法简单地告诉TypeScript自己引入'require'依赖?
  3. 非常感谢这方面的任何想法或信息。

    编辑:

    为了澄清,我在保存/构建期间从.js生成.ts,并在post构建操作中将browserify指向输出。删节的js输出如下所示:

    var TestModule;
    (function (TestModule) {
        function launchDrone() {
            var exports = require('ar-drone');
            var client = exports.createClient();
        }
    })(TestModule || (TestModule = {}));
    

    当我从中生成浏览器化文件时,我无法在任何上下文中访问TestModule或launchDrone(当然也不能从窗口中访问。)是否有访问浏览器化代码的技巧?

1 个答案:

答案 0 :(得分:3)

看起来你可能没有导出TestModule?您的TestModule文件应如下所示:

module TestModule {
    export function launchDrone() {
        var exports = require('ar-drone');
        var client = exports.createClient();
    }
}
export = TestModule;

这样你能够从窗口启动TestModule和TestModule.launchDrone。