使用TypeScript导入节点模块

时间:2013-08-22 10:55:46

标签: node.js typescript

我正试图让它发挥作用,但我似乎无法在任何地方找到解决方案。尝试编译此单文件应用程序时:

import http = require('http')
http.createServer(function (req, res) {
  res.writeHead(200, {'Content-Type': 'text/plain'});
  res.end('Hello World\n');
}).listen(1337, '127.0.0.1');
console.log('Server running at http://127.0.0.1:1337/');

使用命令“tsc app.ts --module'commonjs'”我收到以下错误(不使用--module标志给我一个额外的错误,告诉我我需要它来编译外部模块):

error TS2071: Unable to resolve external module '"http"'.
error TS2072: Module cannot be aliased to a non-module type.

3 个答案:

答案 0 :(得分:41)

TypeScript需要知道http存在。

更新

为节点安装类型definitinos:

npm install @types/node

旧答案

遵循以下两个步骤

PS:查看示例测试文件:https://github.com/borisyankov/DefinitelyTyped/blob/master/node/node-tests.ts

答案 1 :(得分:1)

我发现我的tsconfig.json文件中noResolve设置为true。这导致我对包含在TypeScript文件顶部的.d.ts文件的引用出错。

答案 2 :(得分:-4)

不应该像

那样
/// <reference path="node.d.ts" />
import http = module('http')

我的意思是,您不应该使用module代替require吗?