vscode配置deno环境需手动启用deno.enable为true并设于工作区settings.json,指定deno.path绝对路径,显式添加--allow-*权限标志,删除tsconfig.json避免ts服务抢权。

VSCode 里不能“配置 Node 环境来运行 Deno 项目”——Deno 和 Node 是互斥的运行时,强行混用会导致 fetch、Deno.cwd()、URL 导入等行为全部失效或报错。你真正需要的,是让 VSCode 正确识别并专用于 Deno,而不是迁就 Node。
deno.enable 必须设为 true,且只能在工作区 settings.json 里
插件安装完默认不干活,这不是 bug,是设计:避免污染你的 Express 或 React 项目。VSCode 不会自动切换语言服务,必须手动声明“这个文件夹是 Deno 的”。
- 按
Cmd+Shift+P(macOS)或Ctrl+Shift+P(Windows/Linux),输入并执行Deno: Initialize Workspace Configuration,它会自动生成.vscode/settings.json并写入"deno.enable": true - 别往用户设置(User Settings)里加这行,否则打开任意
.ts文件都会触发 Deno 类型检查,require、__dirname立刻变红色波浪线 - 验证是否生效:打开一个
.ts文件,敲fetch,如果有完整签名和文档提示,说明已激活
deno.path 指向错误路径会导致 “command 'deno.client.restart' not found”
这个报错不是插件挂了,是 VSCode 根本找不到 deno 可执行文件。GUI 启动的 VSCode(比如从 Dock 点开)通常读不到 shell 的 PATH,尤其 macOS 上很常见。
- 先在终端运行
which deno(macOS/Linux)或where deno(Windows PowerShell),拿到真实路径,例如/opt/homebrew/bin/deno或$HOME/.deno/bin/deno - 把该绝对路径填进工作区
.vscode/settings.json:"deno.path": "/opt/homebrew/bin/deno";不要用~或环境变量,不解析 - 改完保存,执行
Developer: Reload Window重启窗口,再看右下角是否显示Deno (v1.x)
PermissionDenied 错误不能靠插件绕过,必须显式加 flag
VSCode 只负责编辑和类型提示,不参与代码执行。写完 await fetch("https://") 编辑器不报错,不代表能跑通——Deno 在运行时强制校验权限。
-
deno run报错如Uncaught (in promise) PermissionDenied: network access to "https://...",就得手动加--allow-net - 调试时也一样:launch.json 的
args字段必须包含权限标志,例如"args": ["--allow-net", "--allow-read", "./main.ts"] - 如果用 Code Runner 插件,需在用户设置里修改
code-runner.executorMap,把deno run对应命令改成带 flag 的完整形式
删掉 tsconfig.json,否则 TS 服务会抢权
Deno 不读 tsconfig.json,但它存在就会让 VSCode 的 TypeScript 语言服务优先加载它,结果是 Deno.readTextFile() 提示“无法找到名称”,import 从 URL 开始的部分也无法跳转。
- 直接删掉项目里的
tsconfig.json,或者重命名为tsconfig.json.disabled - 需要格式化或 lint 规则?用
deno.json替代:"fmt": { "lineWidth": 100 }或"lint": { "rules": { "tags": ["recommended"] } } - 有导入映射(
import_map.json)?必须在deno.json里声明:"importMap": "./import_map.json",否则跳转定义失败
最常被忽略的一点:VSCode 是否从终端启动。macOS 上双击 Dock 图标打开的 VSCode 几乎必然读不到 ~/.zshrc 里的 PATH,导致 which deno 在集成终端里为空。用 code . 从终端启动,是最稳的兜底方案。











