On this page
运行代码
Deno 直接运行 JavaScript 和 TypeScript(无需构建步骤、无需配置),并置于一个安全沙箱之后,只有在你请求时才会授予访问权限。本页将介绍代码实际如何运行:权限、启动方式、监听模式,以及任务。
运行文件 Jump to heading
将 Deno 指向一个文件。TypeScript 可直接运行:
deno run main.ts
deno run 是显式的,但你可以对文件或任务省略 run,Deno 会自行判断:
deno main.ts # 与 `deno run main.ts` 相同
权限:默认安全 Jump to heading
这部分与 Node 不同。代码在沙箱中运行,默认无法访问网络、文件系统、环境变量或子进程,直到你授予它权限。尝试在没有权限的情况下读取文件的脚本会停止并询问,或者在禁用提示时失败。
使用 --allow-* 标志授予访问权限(每个都有简写形式),并将范围缩小到恰好所需的内容:
deno run --allow-net main.ts # 网络 (-N)
deno run --allow-read=./data main.ts # 文件系统 (-R),限定范围
deno run -N=api.example.com -E main.ts # 组合,简写形式
使用 --deny-* 来排除例外,或者使用 -A / --allow-all 完全跳过沙箱。这在受信任的环境中很方便,但也放弃了这些保证。有关每个标志,请参见 Permissions,有关其背后的模型,请参见 Security。
从 URL 或 stdin 运行 Jump to heading
Deno 可以直接从 URL 运行代码(适合一次性工具和安装器),也可以从 stdin 运行:
deno run https://example.com/script.ts
echo 'console.log(1 + 1)' | deno run -
远程代码和其他代码一样会被沙箱隔离:除非你授予权限,否则它不会获得任何权限。
使用 watch 模式在更改时重新加载 Jump to heading
添加 --watch 后,只要它依赖的某个文件发生变化,Deno 就会重新运行你的程序。无需 nodemon,无需额外依赖:
deno run --watch main.ts
deno test、deno fmt 等也支持 --watch。关于监听哪些内容、排除路径以及热模块替换,请参见 CLI patterns page。
运行项目任务 Jump to heading
在 deno.json 中定义可重复使用的命令,并使用 deno task 运行它们,它相当于 npm run:
{
"tasks": {
"dev": "deno run --watch --allow-net main.ts",
"start": "deno run --allow-net main.ts"
}
}
deno task dev
任务可以运行其他任务、设置环境变量,并且可跨平台工作。
快速尝试代码 Jump to heading
对于实验,可以直接求值一个表达式,或者打开 REPL:
deno eval "console.log(Deno.version)"
deno repl
进一步了解 Jump to heading
- 编写 HTTP 服务器。 使用 Web 标准的
Deno.serve处理请求。 - Web 开发。 使用 Fresh、Next.js、Astro 和 Web 标准 API 构建应用。
- Web 平台 API。
fetch、Request/Response、流、Web Crypto,以及 Deno 实现的其他浏览器全局对象。 - 调试。 连接 Chrome DevTools 或你编辑器的调试器。
- deno run 参考。 详细了解每个标志。