2017-02-20 65 views
1

这是非常简单的代码:打字稿错误:app.ts(18,10):错误TS2503:找不到命名空间“服务器”

"use strict"; 

import * as express from "express"; 

class Server { 
    public app: express.Application; 

    public static run(): Server { 
     return new Server(); 
    } 

    constructor() { 
     this.app = express(); 
    } 
} 

var server = Server.run(); 
export = server.app; 

当我尝试编译tsc app.ts我得到一个错误:

app.ts(18,10): error TS2503: Cannot find namespace 'server'.

尽管错误的TSC创建输出文件(app.js)

为什么我得到的错误?我做错了什么?

+0

你是否也有'express'定义文件? –

回答

3

我把你的最后一行改为export default server.app,它编译得很好。

你有一个commonjs风格的导出语句,而不是打字稿期望的ES6导出语句。

见出口的语法打字稿规范在https://www.typescriptlang.org/docs/handbook/modules.html

打字稿不支持某些export =语法,但它仅限于类,接口,命名空间,功能,或枚举。

的文档状态:

The export = syntax specifies a single object that is exported from the module. This can be a class, interface, namespace, function, or enum."

+0

哦..大声笑..非常感谢。 :)) –