deno是独立于node.js的全新javascript/typescript运行时,推荐用官方install.sh脚本安装:curl -fssl https://deno.land/x/install/install.sh | sh,再将~/.deno/bin加入path并source配置文件,最后执行deno --version验证。

直接装 deno 二进制就行,不用 npm、不依赖 Node.js,也不需要 root 权限(可选)。它和 Node.js 完全无关,不是“Node 的插件”或“增强版”,而是从零重写的独立运行时。
用官方 install.sh 脚本一键安装(推荐)
这是最稳妥、适配性最强的方式,脚本会自动检测系统架构、下载对应二进制、解压到 $HOME/.deno/bin,并提示你把路径加进 $PATH。
执行命令:
curl -fsSL https://deno.land/x/install/install.sh | sh
安装后必须手动激活环境变量(否则终端不认识 deno 命令):
- 如果是 Bash:运行
source ~/.bashrc - 如果是 Zsh:运行
source ~/.zshrc - 如果没生效,检查
~/.bashrc或~/.zshrc末尾是否已追加了类似这行:export DENO_INSTALL="$HOME/.deno"; export PATH="$DENO_INSTALL/bin:$PATH"
验证是否成功:
deno --version
输出类似 deno 1.43.0 即可。
为什么不能用 apt/yum/dnf 直接装?
主流 Linux 发行版的官方仓库(如 Ubuntu 的 apt、Fedora 的 dnf)目前**不提供 Deno 的稳定包**。偶尔有第三方打包(比如某些 AUR 或 Copr 源),但版本滞后、更新不可控,且可能绕过 Deno 自身的安全机制(例如权限沙箱被误配置)。
常见错误现象:
-
command not found: deno—— 安装了但没 source 环境变量 -
deno: error while loading shared libraries: libssl.so.3: cannot open shared object file—— 用了非官方二进制(比如某发行版打包的旧版),依赖 OpenSSL 版本不匹配 - 运行时报
PermissionDenied却没加--allow-read—— 这是 Deno 正常行为,不是安装失败
安装后首次运行文件要注意权限
Deno 默认拒绝一切外部操作。哪怕只是读一个本地 JSON 文件,也得显式授权:
deno run --allow-read=./config.json main.ts
常见权限参数含义:
-
--allow-read:允许读文件(可指定路径前缀,如--allow-read=/tmp) -
--allow-net:允许网络请求(可限定域名:--allow-net=api.example.com) -
--allow-env=DATABASE_URL:只允许读取特定环境变量 -
--allow-run=git:只允许执行git命令,不能跑rm -rf
不加任何权限参数就尝试 Deno.readTextFile() 或 fetch(),会直接抛出 Uncaught PermissionDenied 错误 —— 这不是 bug,是设计。
要不要用 nvm / volta 管理 Deno 版本?
完全没必要。Deno 自带升级命令:
deno upgrade
它会自动拉取最新稳定版,替换本地二进制。不需要额外工具链,也不像 Node.js 那样存在多版本共存需求 —— Deno 的语义化版本兼容性很好,v1.x 之间基本无破坏性变更。
容易被忽略的一点:Deno 的模块缓存默认存在 $HOME/.deno/deps,远程 URL 导入的模块会在这里落盘。如果你在 CI/CD 中使用 Deno,记得清理该目录或设 DENO_DIR 环境变量指向临时路径,否则可能因缓存导致依赖不一致。











