TypeScript编译错误TS5037:除非提供了"--module"标志,否则无法编译外部模块

Igo*_*r T 29 compiler-construction typescript

无法编译任何TS + node.js项目,包括样本http://typescript.codeplex.com/sourcecontrol/latest#samples/imageboard/README.txt中列出的项目

始终收到以下错误:

错误TS5037:除非提供了"--module"标志,否则无法编译外部模块.

编译器版本:0.9.1.0

例如,该项目只包含单个文件app.ts:


///<reference path="./node_definitions/node.d.ts" /

import http = require("http")

http.createServer(function (req, res) {
  res.writeHead(200, {'Content-Type': 'text/plain'});
  res.end('Hello World\n');
}).listen(1337, 'localhost');
console.log('Server running at http://localhost:1337/');
Run Code Online (Sandbox Code Playgroud)

小智 28

也只是添加.

我正在使用Visual Studio 2013我运行构建时遇到同样的错误来修复它.我去了我的项目的属性,然后到"TypeScript构建"部分,可以选择一个模块系统我选择了AMD它没有.


bas*_*rat 26

如上所述使用模块标志进行编译,例如,如果调用了您的文件myfile.ts:

tsc myfile.ts --module "commonjs" 
Run Code Online (Sandbox Code Playgroud)

原因是从TSC 0.9.1开始,默认模块选项是amd(例如requirejs),这是客户端javascript代码最常见的模块模式.所以,你需要指定模块选项来获取commonjs代码,这是服务器端javascript代码(例如nodejs)最常见的模块模式,这就是为什么编译器会提示你明确你的目标:)这个提示发生在你的时候import在外部模块上做一个.