@Types使用的模块不正确Typescript,http-proxy-middleware,webpack,react

问题描述

我正在尝试使用与this repo类似的设置来尝试使用React和Express创建一个全栈打字稿应用程序。

repo使用诸如nodemon之类的tsc-watch来监视服务器文件,然后使用webpack-dev-server将响应静态文件托管在端口8085上。同时,运行在3000上的服务器通过以下方式呈现react应用程序:在8085将所有静态请求代理到/ static。

当我克隆仓库时,一切正常。但是,在我自己的仓库中(我试图学习如何进行类似的配置,服务器不断抛出此错误

node_modules/@types/webpack-dev-server/index.d.ts

然后:

node_modules / http-proxy-middleware / dist / index“'没有导出的成员'Config'。

当我进入node_modules时,我可以看到@ types / webpack-dev-server期望从http-proxy-middleware获得Config。在@ types / http-proxy-middleware中,有一个名为Config的接口。但是,在普通的http-proxy-middleware节点模块文件夹中没有该文件夹,这就是导致该错误的原因。

我的问题是如何获取@ types / webpack-dev-server以使用@ types / http-proxy-middleware,而不仅仅是node_modules / http-proxy-middleware?还是我完全想念其他东西?

如果需要,我可以发布代码

解决方法

以下一些事实可能会有所帮助:

  • statics-router.ts is using http-proxy-middleware,版本"^1.0.3"
  • webpack-dev-server依赖于版本"0.19.1"
  • Config上的http-proxy-middleware在版本1中已删除。
  • 版本1的类型定义是http-proxy-middleware本身的一部分(而不是像以前一样在@types下)
  • 如果您查看/node_modules/@types/webpack-dev-server/package.json,将在dependencies上看到它具有:"@types/http-proxy-middleware": "*"。请注意,它取决于.d.ts
  • @types 版本

看来打字稿正在先搜索node_modules/LIBRARY下的类型定义,然后再搜索@types下的类型定义,以便它“找到”版本1的.d.ts,而不是版本{{1 }}像0.19.1一样

要解决此问题,只需添加: webpack-dev-server到共享的"skipLibCheck": true,