Node.js 打字脚本可以';编译时找不到外部模块
我有一个基于angular 2种子存储库()的项目,我正试图添加一个express server后端,以用TypeScript编写。我的目录结构是相同的,只是我在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
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
}