Node.js 打字脚本可以';编译时找不到外部模块

Node.js 打字脚本可以';编译时找不到外部模块,node.js,express,typescript,Node.js,Express,Typescript,我有一个基于angular 2种子存储库()的项目,我正试图添加一个express server后端,以用TypeScript编写。我的目录结构是相同的,只是我在src/中添加了一个名为server/的文件夹 我已经运行了typings安装,我可以看到express.d.ts位于typings/目录中,但由于某种原因,在编译代码时,我总是遇到以下错误(使用typescript@1.8.7): ./src/server/server.ts: import * as express from 'ex

我有一个基于angular 2种子存储库()的项目,我正试图添加一个express server后端,以用TypeScript编写。我的目录结构是相同的,只是我在
src/
中添加了一个名为
server/
的文件夹

我已经运行了
typings安装
,我可以看到
express.d.ts
位于
typings/
目录中,但由于某种原因,在编译代码时,我总是遇到以下错误(使用
typescript@1.8.7
):

./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节点,因为担心性能问题(不确定这是否合理)

为什么编译器找不到express外部模块?我对使用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
}
他们说你只需要排除其中一个或包含另一个,但我尝试了两种方法,但仍然不起作用

但我不打算在生产中使用ts节点,因为担心性能问题(不确定这是否合理)

有道理。虽然只是轻微的。这只是您正在节省的初始编译成本

为什么编译器找不到express外部模块


确保您的
tsconfig.json
设置正确,包括
typings/main.d.ts
事实证明,我使用的typescript编译器版本不是我通过npm安装的版本,而是通过Visual Studio安装的,并且是旧版本(版本1.0)。您可以通过运行
where tsc
来检查这一点

解决方案是删除C:\Program Files(x86)\Microsoft SDK\TypeScript 我的路径环境变量中的1.0项


根据,这似乎是官方认可的解决方案。

感谢您的回答,不过,请参阅我的编辑。还感谢您对ts节点的了解。如果它只是增加了一些编译时间,那么它可能还是值得使用的。你能分享你的项目吗。ng2种子感觉过于复杂:)
{
    "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
}