如何在 deno 编译中添加权限标志?

How to add permission flags in deno compile?

我创建了一个脚本,我想使用 deno compile --unstable [src] 将其变成可执行文件,但是当我尝试 运行 可执行文件时,它说权限被拒绝。

我的问题是有没有一种方法可以创建带有权限标志的可执行文件,就像您可以的那样deno install --flag [src]

From Deno 1.7.0 on, the compile 函数具有与我们从 运行 命令中知道的相同的权限标志。

当 运行 作为脚本时需要权限的代码(例如 --allow-write)需要与编译命令相同的权限。

例如,考虑这个创建文件并向其中写入文本的简短脚本:

const write = Deno.writeTextFile("./hello.txt", "Hello World!");
write.then(() => console.log("File written to ./hello.txt"));

运行 作为脚本 --allow-write:

> deno run --allow-write .\filewrite.ts
File written to ./hello.txt

编译时没有 --allow-write。错误消息可以解释为好像您需要将选项应用于创建的 .exe,但实际上它需要在编译期间应用:

>deno compile --unstable .\filewrite.ts
...Emit filewrite

>.\filewrite.exe
error: PermissionDenied: write access to "./hello.txt", run again with the --allow-write flag

使用 --allow-write 标志编译:

>deno compile --unstable --allow-write .\filewrite.ts
...Emit filewrite

>.\filewrite.exe
File written to ./hello.txt

--allow-read--allow-net 标志当然也是如此。

之前的 Deno 版本 (1.6.3) 没有这些编译器标志,并且表现得好像所有权限都已被授予。见 older revision of this answer