在针对es6或更高版本时,无法将外部模块编译为amd或commonjs

时间:2015-05-18 12:49:35

标签: node.js typescript

test.ts

export class Test {
    whatever(): Promise<any> {
        return undefined;
    }
}

尝试使用旧版本进行编译:

$ tsc --version
message TS6029: Version 1.4.1.0
$ tsc --target es6 --module commonjs test.ts
$ cat test.js
var Test = (function () {
    function Test() {
    }
    Test.prototype.whatever = function () {
        return undefined;
    };
    return Test;
})();
exports.Test = Test;

这很好。现在有了新版本:

$ ./node_modules/.bin/tsc --version
message TS6029: Version 1.5.0-beta
$ ./node_modules/.bin/tsc --target es6 --module commonjs test.ts
error TS1204: Cannot compile external modules into amd or commonjs when targeting es6 or higher.

为什么?我正在开发NodeJS应用程序,所以我必须使用commonjs。此外,我需要本机承诺,因此es6目标。

$ ./node_modules/.bin/tsc --target es5 --module commonjs test.ts
test.ts(2,14): error TS2304: Cannot find name 'Promise'.

1 个答案:

答案 0 :(得分:3)

如果要编译支持ES6的目标,则应使用ES6模块导入,而不是commonjs或AMD。

import * as Promise from 'Promise';

如果您提供--module,则在编译时删除--target ES6标记。