当我尝试运行我的第一个 deno 程序时收到错误消息
deno run server.ts
错误:未捕获的权限被拒绝:对"0.0.0.0:8000"的网络访问,使用 --allow-read 标志再次运行
Deno默认是安全的。因此,除非您特别启用它,否则 deno 模块没有文件、网络或环境访问权限。访问安全敏感区域或功能需要使用在命令行上授予 deno 进程的权限。
如果您正在访问网络,则需要在运行服务器时传递--allow-net
标志,并且如果您的应用程序中存在用于读取和发送文件的函数,则需要传递--allow-read
和--allow-write
标志。
所以
deno run --allow-net --allow-read server
然后我运行相同的命令,并添加"--allow-read"标志,如下所示
deno run --allow-read flag server.ts
错误消失了。 因为我正在读取一个文件,因为 deno 在单独的沙箱中运行,所以默认情况下它无法访问文件系统。 我们需要同意/提供在运行脚本时通过安全标志读取文件的访问权限。
此外,所有安全标志都应紧随其后编写,如下所示的格式
$ deno run {any security flag} {script file name/fullpath }
您应该授予权限,您可以通过运行以下命令来执行此操作:
deno run --allow-net server.ts
或
deno run --allow-read server.ts
或
deno run --allow-net --allow-read server.ts
Deno 是默认安全的运行时。这意味着需要显式提供权限才能运行特权操作。在这里,您尝试访问网络,您需要使用run命令传递标志--allow-net
。
deno run --allow-net server.ts
若要使每次都输入多个标志的过程,您可以创建一个脚本并每次都运行该脚本。
就像我在项目根级别创建一个文件run.sh
,其中包含运行服务器所需的所有标志的运行命令。
内容(如果run.sh
(
deno run --allow-net --allow-write --allow-read --allow-plugin app.ts
然后我在终端中运行此命令以运行服务器
sh run.sh