VSCode TypeScript项目启用Deno后模块加载报错如何修复
问题原因
这堆导入报错和你的项目代码、Deno本体被杀毒软件标记都没关系,本质是VSCode的Deno扩展默认全局生效,把你原本的Node.js TypeScript项目按Deno的规则做模块校验了。
两者的模块解析逻辑完全不兼容:
- Deno不会像Node.js一样自动递归查找
node_modules目录下的依赖,所以会报找不到本地node-fetch模块的错误 - Deno不支持直接写包名的裸导入写法,要求所有相对路径导入必须以
/、./或../开头,所以会报reflect-metadata导入前缀缺失的错误
你之前项目运行正常,就是装完Deno扩展后全局配置被打开,才突然出现批量报错。
修复方案
你现在手动禁用Deno后报错消失是正常的,但直接全局关闭不是最优解,根据自己的使用场景选对应方案即可:
- 如果你后续还要用VSCode写Deno项目(推荐)
不要全局禁用Deno,只在当前Node.js项目下关闭Deno校验:- 在项目根目录新建(或打开已有的)
.vscode/settings.json文件 - 写入如下配置:
{ "deno.enable": false } - 按
Ctrl+Shift+P调出命令面板,选择Developer: Reload Window重载窗口,报错就会全部消失。这个配置只对当前项目生效,后续打开Deno项目时扩展可以正常工作。
- 在项目根目录新建(或打开已有的)
- 如果你完全没有Deno开发需求
直接在VSCode扩展面板找到Deno扩展,选择禁用或者卸载即可,这是完全合理的处理方式,不会对现有Node.js/TS项目造成任何负面影响。 - 如果你需要在同一个工作区同时维护Node和Deno项目
不要开启全局Deno开关,针对单独的Deno项目文件夹单独配置开启deno.enable: true,其余Node项目文件夹保持关闭,避免扩展跨目录错误接管校验逻辑。
补充说明
不需要修改任何项目里的导入语句,也不需要重新安装Deno或者依赖包,只要调整扩展的作用范围配置就能彻底解决问题。
内容的提问来源于stack exchange,提问作者Phil Kelsey
相关产品推荐
相关产品推荐

