node.js - 为打字稿导入节点请求类型
问题描述
我有一个用 js 在 node 中开发的小型代理服务器,我正在尝试用 typescript 重写它。
我有以下代码:
http.createServer(onRequest).listen(config.port);
console.log(`proxy listening on port ${config.port}`)
function onRequest(local_req:, local_res) {
console.log('serve: ' + local_req.url);
const url = config.forward_url + local_req.url
[...]
并且打字稿抱怨
参数“local_req”隐含一个“any”类型。ts(7006) 参数“local_res”隐含一个“any”类型。ts(7006)
我已经做了npm i @types/node -D
我看到 createServer 方法的定义如下:
function createServer(options: ServerOptions, requestListener?: RequestListener): Server;
但我没有 RequestListener 的定义
我用谷歌搜索它,我在这里找到它(我认为它应该已经安装npm i @types/node -D
),如下所示:
export function createServer(requestListener?: (request: ServerRequest, response: ServerResponse) =>void ): Server;
然后我查找 ServerRequest 的定义,它就在这里,但我的机器上没有它。
我猜我用谷歌搜索的定义不是我用 npm 安装的。
我不明白如何处理节点类型的定义。
谁能给我一个关于如何下载您在节点中使用的类型的定义的提示?
解决方案
最后我可以这样解决它:
function onRequest(local_req: IncomingMessage, local_res: ServerResponse)
但是我不得不四处搜索,找到与我安装的版本不同且不兼容的版本,并且编辑器(vscode)对此有点误导。
我想知道是否有更好的方法来处理这些问题
推荐阅读
- azure - Azure DevOps 和 Terraform 扩展 - 调试
- android - 将drawable保存为字符串并将字符串从保存的字符串转换为位图?
- python - 使用 FastAPI 服务时无法识别 CSS
- laravel - Laravel 无法取消选中使用 old 并设置默认值的复选框
- wordpress - 在 WooCommerce 中显示自定义订单过滤器
- python - 如何使用 Python 从字符串中提取数字(没有空格)?
- wordpress - 如何通过子主题覆盖父主题引导类
- javascript - JavaScript - 如何检查具有特定域名的 URL?
- react-admin - React-admin :在 SimpleForm 中删除或添加自定义工具栏
- android - 从 Github 拉取到 Android Studio