为何创建Mongoose Schema时VS Code智能感知自动补全失效?
请问是否有人知道为何我创建Mongoose Schema时,IntelliSense智能感知功能完全失效?该功能此前可正常使用。问题现象截图见问题现象截图。我针对该问题进行了大量检索,但遗憾的是未找到可有效解决问题的方案。我当前安装的Node.js相关扩展包括:
EsLint、JavaScript and TypeScript Nightly、Node extension pack、npm intellesense、path intellesense、REST Client、Visual studio Intellicode。
排查方案
- 优先处理
JavaScript and TypeScript Nightly扩展冲突
该扩展是VS Code官方TypeScript/JavaScript语言服务的预览版本,会默认覆盖VS Code自带的稳定版语言服务。Mongoose的类型推导高度依赖稳定的语言服务类型解析逻辑,预览版的实验性改动很容易打破原有类型识别规则,是该场景下最高发的诱因。
验证操作:打开VS Code扩展面板,找到JavaScript and TypeScript Nightly,选择「禁用(工作区)」,重启VS Code后测试IntelliSense是否恢复。 - 检查项目类型配置
分两类场景核对:- 如果是TypeScript项目,打开根目录
tsconfig.json;如果是纯JavaScript项目,打开jsconfig.json,确认以下配置:moduleResolution设置为node或node16,避免使用不兼容的解析规则- 若开启
strict模式,需确认Mongoose版本为7.x及以上,Mongoose 5.x、6.x旧版本和strict模式的类型推导存在已知兼容问题
- 在项目根目录执行命令
npm ls mongoose @types/mongoose检查依赖:Mongoose 6.x及以上版本已内置完整类型定义,无需额外安装社区维护的@types/mongoose,如果同时安装了两个包,先卸载@types/mongoose即可。
- 如果是TypeScript项目,打开根目录
- 重启TypeScript语言服务
按Ctrl+Shift+P(macOS为Cmd+Shift+P)调出命令面板,依次执行以下操作:TypeScript: Restart TS Server重启语言服务- 操作后无效果的话,再执行
Developer: Reload Window重载整个VS Code窗口
- 排除其他扩展干扰
当前安装的npm intellesense、path intellesense、Visual studio Intellicode均可能干扰原有语言服务的类型返回逻辑。临时禁用所有非必装的智能感知类扩展后,逐步开启扩展验证,定位具体冲突项。 - 回溯近期版本变更
若上述操作均无效,可回溯近期的变更项:包括Mongoose依赖版本升级、VS Code自动更新、已装扩展的自动更新等。可通过npm install mongoose@<之前IntelliSense正常时使用的版本>回滚Mongoose,或回退VS Code到对应稳定版本验证。
内容的提问来源于stack exchange,提问作者Zeyad Shaban
相关产品推荐
相关产品推荐

