在 visual studio 中为节点 js 编译打字稿

compile typescript for node js in visual studio

我已经创建了 nodejs typescript 应用程序。标准的主文件是 app.ts。如果我将所有代码放入 app.ts 应用程序将正常工作。但是如果我有一个通过引用添加的打字稿文件,例如:

/// <reference path="Scripts/typings/node/node.d.ts" />
/// <reference path="Server/serverController.ts" />

var _ = require('underscore');

import server = ServerCtrl;

var controller: server.ServerCtrl = new server.ServerCtrl();
controller.startServer();

应用程序抛出错误,因为它找不到 ServerCtrl。如我所见,编译后的 js 文件是:

/// <reference path="Scripts/typings/node/node.d.ts" />
/// <reference path="Server/serverController.ts" />
var _ = require('underscore');
var server = ServerCtrl;
var controller = new server.ServerCtrl();
controller.startServer();
//# sourceMappingURL=app.js.map

然后我按 F5(开始)按钮调试应用程序抛出错误。 问题是如何在 Visual Studio 2013 年使用引用和 compile/debug 正确地为 nodejs 创建打字稿应用程序?

去掉这两行...

/// <reference path="Server/serverController.ts" />
import server = ServerCtrl;

对于您自己的代码,请使用正确的导入...

import server = require("./Server/serverController");

我找到了解决办法。 我只是从包含的文件中删除了 module 语句。类似于:

//before
module ServerController {
    export class ServerCtrl{ /* code */ }
}

//after
export class ServerCtrl{ /* code */ }

然后使用 Steve Fenton post 的代码,例如:

import serv = require('./Server/ServerController');

一切正常!