如何在node.js中要求一个类文件

时间:2016-12-09 17:23:09

标签: node.js typescript

我正在学习Visual Studio 2017中的node.js.

我在这个类中有一个名为“logger.ts”的文件:

export default class Logger {
log(data)
{
    console.log(data);
}
}

然后我尝试在我的节点项目中使用它:

declare var require;
var Logger = require('./logger.js');

var anInstance = new Logger();
anInstance.log('test');

我收到错误“Logger不是函数”。

我该怎么做?

3 个答案:

答案 0 :(得分:1)

我认为您遇到的问题是如何导入Logger。声明var是不必要的,您不需要指定文件扩展名。在服务器端代码中尝试以下操作。

var Logger = require('./logger');

var anInstance = new Logger();
anInstance.log('test');

答案 1 :(得分:1)

由于这是打字稿,我应该使用@FabianLauer建议的打字稿样式。

export class Logger {
    log(data)
    {
        console.log(data);
    }
}

然后导入它:

import { Logger } from "./logger";

var anInstance = new Logger();
anInstance.log('test');

我认为导入会有所不同,因为这是node.js,但它与客户端应用程序完全相同。

答案 2 :(得分:1)

TypeScript提供import statements,它基于ES 2015 language specification

在您的情况下,您可以像这样使用它:

// logger.ts
export class Logger { ... }

// main.ts
import { Logger } from "./logger";
var a = new Logger();
a.log('test');

当您使用default export时,您不需要导入语句中的大括号:

// logger.ts
export default class Logger { ... }

// main.ts
import Logger from "./logger";

您还可以合并default和非默认导出,如下所示:

// logger.ts
export class Logger { ... }
export default Logger;

// example1.ts
import Logger from "./logger"; // works

// example2.ts
import { Logger } from "./logger"; // works too