vscode (1.41.0版本,1.41.1版本)node_modules部分TS声明文件@types包会导致该版本没JS语法提示

正常提示如下:

 

 

然而我的提示没了,本以为是插件问题,把所有插件禁用不行!卸载重装vscode还是不行!!但是其他电脑的1.41.1版本,同样代码确没问题!!!简直日了*了

折腾大半天,发下问题如下:

 

如果刚好你的项目没了语法提示,又刚好是1.41版本,再刚好你的项目有@types/node@12.12.9、再有@types/events@3.0.0、还有项目自身package.json文件,再完美的跟我的电脑一样有坑,那么恭喜你,你触发了隐藏关卡:

 

1.2X 和 1.3X版本无此问题,只有最新两个版本发现此问题,其他版本未测试。

详细版本信息如下:

版本: 1.41.1 (user setup)
提交: 26076a4de974ead31f97692a0d32f90d735645c0
日期: 2019-12-18T14:58:56.166Z
Electron: 6.1.5
Chrome: 76.0.3809.146
Node.js: 12.4.0
V8: 7.6.303.31-electron.0
OS: Windows_NT x64 6.1.7601

代码目录结构:

 

找到问题原因,那么再说说怎么解决。没去翻vscode源码,只说说治标不治本的方法:

方法1:删除项目中的package.json

方法2:删除@types/node/**.d.ts任意文件,上图中node目录下的几个ts文件,任意删除一个即可(如果你不怕代码运行报错的话)

方法3:删除@types/events/**,上图中events目录下的两个文件,任意删除一个(如果你不怕代码运行报错的话)


上面是采用删除文件方法,再来说下如何用改代码方法解决问题:

方法1:将@types/events@3.0.0/index.d.ts声明的Listener改个名字,注意本文件中所有变量名都要修改

export type Listener = (...args: any[]) => void;

为什么该方法可行?说实话本菜鸟不知道!!!

方法二:将@types/events@3.0.0/package.json中的( "name": "@types/events", )字段删除,说实话,我真不知道这name字段哪点碍着vscode了!!!

 

不知道这个坑出在vscode哪点地方,只记录下解决办法。

 

出现问题的文件下载

 

posted @ 2019-12-20 17:06  极·简  Views(2064)  Comments(3Edit  收藏  举报