gpt4 book ai didi

node.js - TypeScript 编译时找不到外部模块

转载 作者:太空宇宙 更新时间:2023-11-04 00:43:33 26 4
gpt4 key购买 nike

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

我已经运行了 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-node,服务器运行时不会提示

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

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

为什么编译器找不到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
}

typings docs说你只需要排除一个或包含另一个,但我都尝试了,但仍然不起作用。

最佳答案

but I'm not going to use ts-node in production for fear of performance issues (not sure if that's justified or not).

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

Why can't the compiler find the express external module?

确保您的 tsconfig.json 设置正确以包含 typings/main.d.ts 🌹

关于node.js - TypeScript 编译时找不到外部模块,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35763090/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com