编译时TypeScript找不到外部模块
我有一个项目,我基于angular2种子存储库( https://github.com/mgechev/angular2-seed ),我试图添加一个快递服务器后端写入TypeScript。 我的目录结构是相同的,除了我添加了一个名为server/
到src/
的文件夹。
我运行typings install
,我可以看到express.d.ts
是typings/
目录,但由于某种原因编译我的代码时,我总是得到以下错误(使用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。
- 在angular度prod构build期间的Javascript内存不足
- Visual Studio不能将JavaScript输出组合成一个文件。 我需要做更多的调整吗?
- 如何使用外部.d.ts模块
- 在打字稿中访问Nodejsstream的highWaterMark属性给出:“Property'_readableState'不存在”错误
- 在TypeScript中,从`import`和`import require`之间的区别
- Typescript编译器错误TS2307:从无NPM的CDN加载时找不到模块“angular2 / core”
- 当npm启动我的Angular2项目时,重复的标识符导出错误
- TypeScripttypes损坏(错误TS2687):“迭代器”的所有声明必须具有相同的修饰符
- 如何在没有Typescript / TSD定义的情况下将库导入节点?