我有一个基于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说您只需要排除一个或包含另一个,但我尝试了两个,但仍然无效。
答案 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,看起来这是官方接受的解决方案。