deno.enable必须手动开启,否则插件不工作;可通过命令面板运行Deno: Initialize Workspace Configuration或在工作区settings.json中添加"deno.enable": true启用,避免误配至全局设置影响普通JS/TS项目。

deno.enable 必须手动开启,否则插件不工作
VSCode 安装完 vscode-deno 扩展后,默认是禁用状态。你不会看到任何类型提示、悬停文档或错误诊断——这不是插件坏了,而是它压根没启动。
必须显式启用,方式有两种:
- 命令面板(
Cmd+Shift+P或Ctrl+Shift+P)中运行Deno: Initialize Workspace Configuration,它会自动在.vscode/settings.json中写入"deno.enable": true - 手动编辑工作区设置文件,添加该字段;注意不要加到用户全局设置里,否则所有 JS/TS 项目都会被强制走 Deno 类型检查,导致普通 Node 项目报错
验证是否生效:打开一个 .ts 文件,输入 fetch,如果出现完整签名和文档提示,说明已激活。
deno.path 配置错误会导致“command 'deno.client.restart' not found”
这个错误不是插件没装好,而是 VSCode 找不到本地 deno 可执行文件。常见于以下情况:
- 通过官方脚本安装后未将
$HOME/.deno/bin(macOS/Linux)或%LOCALAPPDATA%\deno\bin(Windows)加入系统PATH - VSCode 是从桌面图标启动的,没继承 shell 的环境变量(尤其是 macOS 上的 zsh / fish)
-
deno.path设置值写错了路径,比如多了一个斜杠或拼写错误
解决方法:
- 终端里先确认
deno --version能正常输出 - 在 VSCode 终端(
Ctrl+`)里也运行一次,看是否可用 - 若不可用,在工作区
.vscode/settings.json中显式指定:"deno.path": "/Users/xxx/.deno/bin/deno"(替换成你自己的路径)
deno.json 不是必需的,但 lint 和 fmt 行为依赖它
很多教程一上来就让你生成 deno.json,其实它只在你需要自定义规则时才需要。默认情况下,插件直接调用 deno lint 和 deno fmt 的内置规则。
但一旦你写了 deno.json,插件就会严格读取其中的 lint 和 fmt 字段,忽略 CLI 默认行为。例如:
{
"lint": {
"rules": { "tags": ["recommended"] }
},
"fmt": {
"options": { "semiColons": false }
}
}
这时候如果你删掉 "semiColons": false,格式化结果会立刻变回带分号——因为插件不再“猜”,而是完全按配置来。
容易踩的坑:
- 复制别人的
deno.json但 Deno 版本太旧,某些规则名已废弃(如no-unused-vars在 v1.38+ 改为no-unused-vars-allow-unused-args) - 误把
deno.jsonc写成deno.json,JSONC 注释不被识别,导致整个配置加载失败
远程模块导入失败常因缓存或网络策略
VSCode 里看到 import { serve } from "https://deno.land/std@0.224.0/http/server.ts"; 下有红色波浪线,但 deno run 能成功?大概率是插件的导入缓存没同步。
原因和对策:
- 首次导入远程 URL 时,Deno 会下载并缓存到
$HOME/.deno/deps,但插件语言服务器可能还没扫描完——执行命令面板里的Deno: Reload Import Registries Cache - 公司网络拦截了
deno.land域名,或设置了代理但插件没读取系统代理设置——临时改用国内镜像源,如https://cdn.deno.land/std/versions/0.224.0/raw/http/server.ts - 用了
--no-check运行脚本,但插件默认做类型检查,遇到未缓存的远程模块会卡住——确保首次运行时没加该 flag,让缓存建立完整
真正难调试的是权限问题:比如 fetch 报错 PermissionDenied: network access to "https://...", run again with the --allow-net flag,但 VSCode 插件本身不传 flag,它只负责类型检查;运行时权限必须由你手动在终端里加。











