编译时,TypeScript无法找到外部模块

时间:2016-03-03 04:16:24

标签: node.js express typescript

我有一个基于angular 2种子存储库(https://github.com/mgechev/angular2-seed)的项目,我试图添加一个用TypeScript编写的快速服务器后端。我的目录结构完全相同,只是我将一个名为server/的文件夹添加到src/

我已经运行typings install并且我可以看到express.d.ts位于typings/目录中,但出于某种原因,在编译我的代码时,我总是会收到以下错误(使用{{ 1}}):

typescript@1.8.7

./ SRC /服务器/ server.ts:

> npm start

> angular2-seed@0.0.0 start C:\Users\Cody\projects\angular2-seed
> tsc --outDir build/ --module commonjs ./src/server/server.ts && node ./build/server.js

src/server/server.ts(1,26): error TS2307: Cannot find module 'express'.

奇怪的是,如果我使用ts-node

,服务器运行时不会抱怨
import * as express from 'express';

let app = express();

app.get('/', function(req, res) {
  res.send('Hello World');
});

app.listen(3000, 'localhost');
console.log('Listening on port 3000');

但是我不打算在生产中使用ts-node而担心性能问题(不确定这是否合理)。

为什么编译器找不到快速外部模块?我对使用TypeScript非常陌生,所以我们非常感谢任何帮助。

**编辑**

tsconfig.json:

> ts-node ./src/server/server.ts
Listening on port 3000

typings docs说您只需要排除一个或包含另一个,但我尝试了两个,但仍然无效。

2 个答案:

答案 0 :(得分:1)

  

但是我不打算在生产中使用ts-node而担心性能问题(不确定这是否合理)。

对齐。虽然只是轻微的。它只是你节省的初始编译成本。

  

为什么编译器找不到快速外部模块?

确保您的tsconfig.json设置正确,以包含typings/main.d.ts

答案 1 :(得分:0)

事实证明我使用的打字稿编译器的版本不是我通过npm安装的版本,而是通过Visual Studio安装并且是旧版本(版本1.0)。您可以通过运行where tsc来查看此内容。

解决方案是删除C:\ Program Files(x86)\ Microsoft SDKs \ TypeScript 来自我的Path env变量的1.0条目。

根据this GItHub issue,看起来这是官方接受的解决方案。