正常提示如下:
然而我的提示沒了,本以為是插件問題,把所有插件禁用不行!卸載重裝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哪點地方,只記錄下解決辦法。