如何在 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
我创建了一个脚本,我想使用 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