You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

VSCode中.ts文件使用require无法跳转至JS文件定义的问题

问题分析

在混合TS/JS的VSCode项目中,tsc编译正常,但TS文件里用require()导入JS模块时,VSCode的「转到定义」和悬停跳转功能失效——换成import语法或把TS文件改为JS文件后功能恢复。这是因为TypeScript语言服务默认对TS文件中require()导入的JS模块类型解析支持不足,需调整配置让语言服务正确识别这些模块。

解决方案

1. 调整tsconfig.json配置

在compilerOptions中添加checkJs: true,同时可补充esModuleInterop: true优化兼容性:

{
    "compilerOptions": {
        "module": "CommonJS",
        "moduleResolution": "node",
        "target": "es2019",
        "allowJs": true,
        "checkJs": true, // 让TypeScript分析JS文件的类型信息,支撑跳转功能
        "strict": true,
        "outDir": "dist",
        "esModuleInterop": true // 增强CommonJS与ES模块的兼容性,优化导入解析效果
    },
    "include": ["./src/**/*"]
}
  • checkJs: true是核心配置:启用后TypeScript会解析JS文件的类型,VSCode语言服务就能基于这些信息提供跳转和定义定位。
  • esModuleInterop: true为可选配置:自动启用allowSyntheticDefaultImports,既优化import语法兼容CommonJS的体验,也能辅助提升require()导入的解析效果。

2. 切换VSCode使用项目本地TypeScript版本

VSCode默认可能用内置TypeScript版本,而非项目安装的版本,易导致配置不生效:

  • 点击VSCode右下角的TypeScript版本号(如4.9.5)。
  • 在弹出菜单中选择「Use Workspace Version」,切换到项目本地安装的版本。

3. 重启TypeScript语言服务

修改配置后,按Ctrl+Shift+P(Windows/Linux)或Cmd+Shift+P(Mac),输入「TypeScript: Restart TS Server」并执行,让配置生效。

验证

完成上述操作后,回到index.ts悬停require('./utils')的路径,即可看到跳转选项,「转到定义」也能正常定位到utils.js文件。

内容的提问来源于stack exchange,提问作者Asher

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.01 16:25:24