VS Code中使用Quick Fix安装缺失类型包时触发TypeScript Server调试错误
问题场景与报错
在TypeScript项目中启用noImplicitAny: true后,部分导入语句被标记错误,提示:
Could not find a declaration file for module X. X implicitly has an 'any' type.
使用VS Code提供的「Quick Fix: Install all missing types packages」尝试修复时,触发TypeScript Server(4.8.4)调试错误,具体日志如下:
<semantic> TypeScript Server Error (4.8.4) Debug Failure. False expression. Error: Debug Failure. False expression. at NodeTypingsInstaller.installPackage (/Applications/Visual Studio Code.app/Contents/Resources/app/extensions/node_modules/typescript/lib/tsserver.js:184082:30) at TypingsCache.installPackage (/Applications/Visual Studio Code.app/Contents/Resources/app/extensions/node_modules/typescript/lib/tsserver.js:171393:39) at Project.installPackage (/Applications/Visual Studio Code.app/Contents/Resources/app/extensions/node_modules/typescript/lib/tsserver.js:171680:42) at applySingleCodeActionCommand (/Applications/Visual Studio Code.app/Contents/Resources/app/extensions/node_modules/typescript/lib/tsserver.js:167662:24) at Object.applyCodeActionCommand (/Applications/Visual Studio Code.app/Contents/Resources/app/extensions/node_modules/typescript/lib/tsserver.js:167656:125) at Session.applyCodeActionCommand (/Applications/Visual Studio Code.app/Contents/Resources/app/extensions/node_modules/typescript/lib/tsserver.js:179894:50) at Session.handlers.ts.Map.ts.getEntries._a.<computed> (/Applications/Visual Studio Code.app/Contents/Resources/app/extensions/node_modules/typescript/lib/tsserver.js:178253:61) at /Applications/Visual Studio Code.app/Contents/Resources/app/extensions/node_modules/typescript/lib/tsserver.js:180174:96 at Session.executeWithRequestId (/Applications/Visual Studio Code.app/Contents/Resources/app/extensions/node_modules/typescript/lib/tsserver.js:180165:28) at Session.executeCommand (/Applications/Visual Studio Code.app/Contents/Resources/app/extensions/node_modules/typescript/lib/tsserver.js:180174:41) at Session.onMessage (/Applications/Visual Studio Code.app/Contents/Resources/app/extensions/node_modules/typescript/lib/tsserver.js:180202:35) at process.<anonymous> (/Applications/Visual Studio Code.app/Contents/Resources/app/extensions/node_modules/typescript/lib/tsserver.js:184368:31) at process.emit (node:events:526:28) at emit (node:internal/child_process:938:14) at process.processTicksAndRejections (node:internal/process/task_queues:84:21)
使用的VS Code版本信息:
Version: 1.72.2 Commit: d045a5eda657f4d7b676dedbfa7aab8207f8a075 Date: 2022-10-12T22:16:30.254Z (1 wk ago) Electron: 19.0.17 Chromium: 102.0.5005.167 Node.js: 16.14.2 V8: 10.2.154.15-electron.0 OS: Darwin x64 21.6.0 Sandboxed: No
可行解决方案
- 手动安装目标类型包:跳过VS Code自动修复,直接针对报错的模块X执行命令安装对应类型包:
npm install @types/X --save-dev # 若使用yarn则执行: yarn add @types/X -D - 升级TypeScript版本:TypeScript 4.8.4存在类型安装器的已知bug,升级到4.9.x及以上版本可解决该问题:
npm install typescript@latest --save-dev - 重置VS Code TypeScript服务:打开命令面板(快捷键
Cmd+Shift+P),执行「TypeScript: Restart TS Server」,之后再尝试自动修复;若无效,可重新加载窗口(Cmd+Shift+P-> 「Reload Window」),或删除.vscode/settings.json中自定义的TypeScript配置项。 - 手动添加类型声明文件:若模块X无官方
@types包,可在项目根目录创建typings文件夹,新增X.d.ts文件,内容如下:
然后在declare module 'X';tsconfig.json的include数组中添加./typings/**/*,让TypeScript识别该声明:{ "include": [ "src/**/*", "./typings/**/*" ] }
内容的提问来源于stack exchange,提问作者Arek Jaworski
相关产品推荐
相关产品推荐

