VSCode中jsconfig.json报TS错误Root file specified for compilation如何解决
错误来源及关联TypeScript的原因
你遇到的报错由VS Code内置的TypeScript语言服务抛出,即便你仅开发JS/JSX项目,只要项目内存在jsconfig.json,VS Code默认会调用TypeScript语言服务提供代码补全、引用查找、语法校验等能力,因此会出现来源标记为ts的报错。
本次报错的核心原因是TypeScript语言服务将node_modules/agent-base/dist/src/index标记为了编译根文件,但本地该路径下的文件缺失、或语言服务缓存异常导致无法读取该文件。
可行解决方法
- 修正jsconfig.json的exclude规则:默认仅配置
"exclude": ["node_modules"]无法匹配嵌套目录下的node_modules,修改为如下配置即可,同时可加入项目构建输出目录减少不必要的扫描:
"exclude": ["node_modules", "**/node_modules/*", "dist", "build"]
- 调整compilerOptions配置,关闭不必要的类型扫描:在jsconfig.json的compilerOptions字段中新增如下配置,避免语言服务自动检索第三方类型包:
"allowJs": true, "noEmit": true, "typeRoots": []
- 重启TypeScript语言服务:在VS Code中按快捷键
Ctrl+Shift+P调出命令面板,执行「TypeScript: 重启TS服务器」,操作完成后再执行「开发人员: 重载窗口」,清空语言服务的历史缓存。 - 重装损坏的依赖包:执行如下命令重装报错指向的agent-base包,解决依赖文件缺失问题:
npm reinstall agent-base
- 关闭纯JS项目的类型校验:如果不需要TS类型校验能力,可直接在VS Code设置中搜索
js/ts.implicitProjectConfig.checkJs,取消该选项的勾选,即可彻底屏蔽所有JS项目下的TS类报错,不影响正常开发。
内容的提问来源于stack exchange,提问作者Gregory Kafanov
相关产品推荐
相关产品推荐

