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哪点地方,只记录下解决办法。