编译时TypeScript找不到外部模块

我有一个项目,我基于angular2种子存储库( https://github.com/mgechev/angular2-seed ),我试图添加一个快递服务器后端写入TypeScript。 我的目录结构是相同的,除了我添加了一个名为server/src/的文件夹。

我运行typings install ,我可以看到express.d.tstypings/目录,但由于某种原因编译我的代码时,我总是得到以下错误(使用typescript@1.8.7 ):

 > 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'. 

./src/server/server.ts:

 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节点

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

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

为什么编译器找不到快速外部模块? 我很新的使用TypeScript,所以任何帮助表示赞赏。

**编辑**

tsconfig.json:

 { "compilerOptions": { "target": "es5", "module": "commonjs", "declaration": false, "noImplicitAny": false, "removeComments": true, "noLib": false, "emitDecoratorMetadata": true, "experimentalDecorators": true, "sourceMap": true }, "files": [ "typings/main.d.ts" ], "exclude": [ "node_modules", "typings/browser.d.ts", "typings/browser/**" ], "compileOnSave": false } 

types文件说,你只需要排除一个或包括其他,但我尝试了两个,但仍然没有工作。

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

有道理的。 虽然只是稍微。 它只是你保存的初始编译成本。

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

确保您的tsconfig.json安装正确,以包含typings typings/main.d.ts main.d.ts🌹

事实certificate,我使用的打字稿编译器的版本不是我通过npm安装的版本,而是通过Visual Studio安装的,并且是旧的(版本1.0)。 你可以通过运行where tsc来检查这个。

解决方法是从我的Path envvariables中删除C:\ Program Files(x86)\ Microsoft SDKs \ TypeScript 1.0条目。

根据这个GItHub的问题 ,看起来这是官方接受的解决scheme。