标准库
Deno 提供了一组标准模块,由核心团队审核并保证其与 Deno 兼容。
标准库可在以下链接获得: https://deno.land/std@$STD_VERSION
版本和稳定性
标准库尚未稳定,因此版本控制与 Deno 不同。要获取最新版本,请参见 https://deno.land/std@$STD_VERSION 或 https://deno.land/std@$STD_VERSION/version.ts。标准库的发布与 Deno 发布同时进行。
我们强烈建议始终使用带固定版本的标准库导入项,以避免意外更改。例如,不要链接到默认分支的代码,该分支可能随时更改,可能导致编译错误或意外行为:
// 导入最新发布版:应避免使用此方法
import { copy } from "https://deno.land/std/fs/copy.ts";
而应使用一个不可改变的 std 库版本:
// 导入 std 的 v$STD_VERSION 版本,从不更改
import { copy } from "https://deno.land/std@$STD_VERSION/fs/copy.ts";
故障排除
标准库中的一些模块使用不稳定的 Deno API。
尝试在没有 --unstable
CLI 标志的情况下运行此类模块会导致大量 TypeScript
错误,提示 Deno
命名空间中的某些 API 不存在:
// main.ts
import { copy } from "https://deno.land/std@$STD_VERSION/fs/copy.ts";
copy("log.txt", "log-old.txt");
$ deno run --allow-read --allow-write main.ts
Compile file:///dev/deno/main.ts
Download https://deno.land/std@$STD_VERSION/fs/copy.ts
Download https://deno.land/std@$STD_VERSION/fs/ensure_dir.ts
Download https://deno.land/std@$STD_VERSION/fs/_util.ts
error: TS2339 [ERROR]: Property 'utime' does not exist on type 'typeof Deno'. 'Deno.utime' is an unstable API. Did you forget to run with the '--unstable' flag?
await Deno.utime(dest, statInfo.atime, statInfo.mtime);
~~~~~
at https://deno.land/std@$STD_VERSION/fs/copy.ts:92:16
TS2339 [ERROR]: Property 'utimeSync' does not exist on type 'typeof Deno'. 'Deno.utimeSync' is an unstable API. Did you forget to run with the '--unstable' flag?
Deno.utimeSync(dest, statInfo.atime, statInfo.mtime);
~~~~~~~~~
at https://deno.land/std@$STD_VERSION/fs/copy.ts:103:10
解决此问题需要添加 --unstable
标志:
deno run --allow-read --allow-write --unstable main.ts
要确保产生错误的 API
是不稳定的,请检查 lib.deno.unstable.d.ts
声明。
这个问题应该在不久的将来得到解决。如果您依赖的特定模块可以在不添加标志的情况下成功编译,请随意省略该标志。